生成一个数字并检查它是否已存在于ArrayList中

fan*_*tus 1 java random numbers arraylist

我想生成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();
    }
}
Run Code Online (Sandbox Code Playgroud)

Bub*_*tan 5

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;
    }
}
Run Code Online (Sandbox Code Playgroud)