【发布时间】:2023-01-30 05:06:52
【问题描述】:
我是 Java 初学者。我正在编写一个方法,该方法应该遍历字节数组的每个可能值,但数组中每个字节数的限制是 13。因此,我使用了嵌套循环。这是我目前拥有的代码:
public static void iterateThroughMoves() {
byte[] moveSet = {0, 0, 0, 0};
while(moveSet[0] < 14) {
while(moveSet[1] < 14) {
while(moveSet[2] < 14) {
while(moveSet[3] < 14) {
System.out.println(Arrays.toString(moveSet));
moveSet[3] ++;
}
moveSet[2] ++;
}
moveSet[1] ++;
}
moveSet[0] ++;
}
}
出于某种原因,当我运行此方法时,它只会将其打印到控制台:
[0, 0, 0, 0]
[0, 0, 0, 1]
[0, 0, 0, 2]
[0, 0, 0, 3]
[0, 0, 0, 4]
[0, 0, 0, 5]
[0, 0, 0, 6]
[0, 0, 0, 7]
[0, 0, 0, 8]
[0, 0, 0, 9]
[0, 0, 0, 10]
[0, 0, 0, 11]
[0, 0, 0, 12]
[0, 0, 0, 13]
Process finished with exit code 0
它不应该打印数组的每个可能值吗?为什么它会跳出循环?除非字节数组的第一个索引的值大于 13,否则第一个 while 循环不会中断,并且正如我们在控制台输出中看到的那样,它永远不会大于 13。
老实说,我不知道该尝试什么。我一直在看代码,但我无法弄清楚哪里出了问题。正如我之前提到的,我是一个初学者,所以如果这是一个非常简单的问题和一个非常简单的解决方案,请不要生我的气。
【问题讨论】:
-
您基本上重新构建了一个
for循环,但省略了初始化部分,因此您依赖于最初为 0 的循环变量,但永远不会在内部循环中重新设置它们。 -
啊学习者实验。 “嘿,这与 for 循环一起工作得很好,但让我们将它转换为 while 循环,因为我刚刚了解它”
标签: java loops while-loop