【发布时间】:2015-04-24 13:16:22
【问题描述】:
我想生成 10 个随机数。但是在向 ArrayList 添加数字之前,我需要检查我的 Arraylist 是否已经包含一个介于 randomNumber - 50 和 randomNumber + 50 之间的数字。
例如,如果随机数是 120:
120-50=70
120+50=170
如果 ArrayList 包含 70 到 170 之间的数字,我不会将它添加到我的 ArrayList 并再次运行循环...
我的代码有什么问题?
package ee.tlu;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class Testing {
public Testing() {
List < Integer > numbers = new ArrayList < > ();
Random rand = new Random();
int number = rand.nextInt(5000);
int n = 0;
boolean listis = false;
numbers.add(number);
while (n < 10) {
number = rand.nextInt(5000);
for (int k = number - 50; k < number + 50; k++) {
if (numbers.contains(k)) {
listis = true;
break;
}
}
if (!listis) {
numbers.add(number);
n += 1;
}
}
System.out.println(numbers);
}
public static void main(String[] args) {
new Testing();
}
}
【问题讨论】:
-
请解释您的问题。预期结果是什么,实际结果是什么。
-
发生什么样的错误?
-
预期结果是 10 个随机数的列表,这些随机数在数组中,两个数字之间的距离至少为 50 个单位。例如 5, 560, 4444, 140, 219, 300, 1000, 390, 900, 2555。但是这个是坏的:5, 40, 100, 101, 300, 300, 500, 600, 7, 45。 , Eclipse 有时运行有时不运行...
-
@Bubletan 有正确的答案。除此之外,您应该考虑在
numbers上循环,而不是在number - 50和number + 50之间的所有整数上循环。
标签: java random arraylist numbers