java - 生成一个数字并检查它是否已经在 ArrayList 中

标签 java random arraylist numbers

我想生成 10 个随机数。但是在我向 ArrayList 添加一个数字之前,我需要检查我的 Arraylist 是否已经包含一个介于 randomNumber - 50randomNumber + 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();
    }
}

最佳答案

你声明listis在开始 while 循环之前。一旦设置为 true,它就永远不会重置。将其移动到循环内。

此外,您永远不会检查 number + 50因为你有 <而不是 <=在你的 for 循环中。

while (n < 10) {
    boolean listis = false;
    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;
    }
}

关于java - 生成一个数字并检查它是否已经在 ArrayList 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29848531/

相关文章:

c++ - 我如何(伪)随机生成数字 0 和 1(不在两者之间)?

java - Android:当点击按钮时->随机字符串

java - 如何将 ArrayList 放入 bundle

java - 将 CSV 文件读入不同类型的数组,然后读入 Arraylist

java - 运行 ArrayList<checkbox> 时抛出空指针异常

java - 如何计算 Java 中原始点和提供点之间的距离

java - 模拟时递归调用系统

c - rand() 不断返回 0

java - 如何更改导航栏颜色?

java - iText PDF : How to create internal links to other sections in PDF