gpt4 book ai didi

java - 如何检查一个数字是否在一个范围内

转载 作者:行者123 更新时间:2023-12-02 09:10:21 24 4
gpt4 key购买 nike

我正在做的在线类(class)遇到问题。问题是:

给定一个整数 x,编写一个程序,生成 x 和 0 之间的随机数,直到该范围内的每个数字至少生成一次。一旦生成了该范围内的所有数字,程序应显示生成的数字。

我编写了一个程序,我认为可以解决这个问题,但在检查数字是否在范围内时遇到问题。这是到目前为止我的代码:

    public static void main(String[] args) {
Random generator = new Random();
ArrayList<Integer> range = new ArrayList<Integer>();
ArrayList<Integer> generated = new ArrayList<Integer>();

int x = 10;
int count = 0;

for(int i = 0; i<x+1; i++){
range.add(i);
}

while(range.isEmpty() != true){
int temp = generator.nextInt(x-1);
count++;
generated.add(temp);
if(range.contains(temp)){
range.remove(temp);
}
}
}
}

我的想法是首先创建两个数组列表。第一个将保存 0 到给定 x 之间的所有数字。第二个将包含生成的随机数。然后我用 0 到 x 之间的范围填充范围数组列表。然后,我的 While 循环检查此范围列表以查看它是否为空。如果没有,它会生成一个随机数,将其添加到我的第二个数组列表中。然后我检查这个数字是否在数组列表范围内 - 如果是,则将其删除并继续。我遇到的问题是,经过几次操作后,它遇到了 IndexOutOfBoundsException 。我认为这是因为我正在从数组列表中删除生成的数字。谁能帮我解决这个问题

编辑:我无法使用任何集合或其他 API。这部分类(class)主要是关于使用数组和循环等,而不是高级 Java 的东西。

最佳答案

remove 是一个重载方法,有 remove(int) 可以删除指定索引处的项目,还有 remove(T) > 删除列表中等于您传入的参数的第一个对象

由于您向方法传递的是 int,而不是 Integer,因此选择第一个方法

对代码最简单的修改是将 range.remove(temp); 替换为 range.remove(range.indexOf(temp));range .remove((整数)temp)

还必须调用generator.nextInt(x+1);,否则程序将陷入无限循环

关于java - 如何检查一个数字是否在一个范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59475380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com