看一下这段代码:
while(oneRay[pick][0] == "" || oneRay[pick][0] == null)
hold = oneRay.length;
random = new Random();
System.out.println(oneRay.length + "\n" + hold);
pick = random.nextInt(hold);
System.exit(0);
}
在控制台输出中,我看到 33,然后是 0。这有什么意义?首先,我将hold设置为等于oneRay的长度,然后打印oneRay的长度,然后打印hold,我应该看不到33和33,或者最坏的情况是0和0吗? 我知道你们中的一些人今晚已经看到了我的许多问题,但我无法通过这个循环,总是存在一些错误或其他错误,在这种情况下,随机不会继续,因为保持的值为 0... 请帮助我!
最佳答案
你使用了
while(oneRay[pick][0] == "" || oneRay[pick][0] == null)
然后你没有使用括号,这意味着你的代码实际上是这样的
while(oneRay[pick][0] == "" || oneRay[pick][0] == null) {
hold = oneRay.length;
}
random = new Random();
System.out.println(oneRay.length + "\n" + hold);
特别是,如果 while
条件不成立,则 hold = oneRay.length
甚至不会被执行。
(您还应该使用 .equals("")
或 .isEmpty
而不是 == ""
,并且您应该首先进行空检查,而不是第二次。)
关于Java Random - 两个相等的值之一如何与另一个不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18938210/