这一挑战来自第4章"Java Programming For Absolute Beginners" by Joseph P. Russell.
编写一个
while
循环,生成1到100之间的随机数 在两次生成相同的数字后停止循环。
我最关心的是我无法弄清楚如何继续初始化数组(如果你在这里使用数组),因为我不知道数组的大小(如果这有意义的话)。
我能获得一些指导吗?
答案 0 :(得分:9)
如果随机数仅在1和100之间生成,则使用大小为100的数组。但是,通常,问题通过更通用的关联容器来解决,例如, HashMap,不需要连续键。
答案 1 :(得分:2)
如果“你不知道数组的大小”那么你需要一个动态增长的“数组”......这是一个ArrayList。
显然有更有效的方法,但我认为现在这样就好了。
答案 2 :(得分:0)
您还可以使用Java Set
的实现,这可以确保没有重复的元素(检测重复的简单方法)。但是,声明一个简单的int[] numbers = int[100]();
数组也可以解决这个问题: - )。
答案 3 :(得分:0)
boolean yourLoop = true;
//you'll need to import java.util.ArrayList;
ArrayList yourNumber = new ArrayList();
//condition so your loop will run
while (yourLoop){
//get your first number to put in the array list, you need to cast as an int
int randNumber = (int)(Math.random() * 100);
//condition to check if the number is in the array list
if (yourNumber.contains(randNumber)) {
//print out the number that matched
System.out.println(randNumber);
//break the while loop
yourLoop = false;
}
else {
//add the number to your array list
yourNumber.add(randNumber);
//print out the array list
System.out.println(yourNumber);
//get another iteration
yourLoop = true;
}
}
答案 4 :(得分:0)
在我看来,逻辑就是初始化一个100长度的数组,以及一个零索引的计数器变量。如果为true,则创建1到100之间的随机轮数。检查数组中生成的数字的索引。如果找不到,则添加数字并递增计数器。
以下是伪代码。
int nums[] = new int[100];
counter = 0;
while(true) {
test = random(1, 100);
if(nums.indexOf(test) != -1) {
return;
}
nums[counter] = test;
counter++;
}