我想知道为什么生成的第一个数字总是“0”。
代码如下:
public static void main(String[] args) {
boolean[] pack = new boolean[52];
int[] cards = new int[5];
for (int i = 0; i < pack.length - 1; i++) {
System.out.print(pack[i] + " | ");
}
System.out.println();
Random give = new Random();
for (int i = 0; i < cards.length; i++) {
while (pack[cards[i]])
cards[i] = give.nextInt(5);
pack[cards[i]] = true;
System.out.println(cards[i]);
}
for (int i = 0; i < pack.length - 1; i++) {
System.out.print(pack[i] + " | ");
}
}
最佳答案
因为 pack(cards[i])
在第一次迭代中始终为 false。解决方案可能是实现 do-while
而不是 while
。
检查这个:
主要内容:
import java.util.Random;
public class hw {
public static void main(String[] args) {
boolean[] pack = new boolean[52];
int[] cards = new int[5];
for (int i = 0; i < pack.length - 1; i++)
{
System.out.print(pack[i] + " | ");
}
System.out.println();
Random give = new Random();
for (int i = 0; i < cards.length; i++) {
do
{
cards[i] = give.nextInt(5);
}
while ( pack[cards[i]] );
pack[cards[i]] = true;
System.out.println(cards[i]);
}
for (int i = 0; i < pack.length - 1; i++)
{
System.out.print(pack[i] + " | ");
}
}
}
输出:
false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false |
4
3
0
1
2
true | true | true | true | true | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false | false |
关于java - 随机生成器始终生成数字 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40499442/