3 回答
TA贡献1795条经验 获得超7个赞
下面的代码应该打印出我的数组的元素,相反,它一次又一次地打印出第一个元素,而不会结束。我不知道这是否是一件简单的事情,但我无法找到我的错误。尽管这个问题对你们大多数人来说可能很容易,但我们将不胜感激。
public static void main(String [] args) {
int[] myintarray = {12,32,34};
int index= 0;
while(index < 3)
System.out.println(myintarray[index]);
index++;
}
}
实际结果: 12 12 12 12 12 12 12 ... 12 预期结果: 12 32 34
此致,您的变量index不会在循环内更新:它保持其初始值 ( index = 0),这就是为什么它总是打印数组中的第一个值。另外,由于index永远不会更新,因此条件index < 3始终是true,这就是循环永远不会结束的原因。
在 while 循环体周围添加大括号可以解决您的问题:
public static void main(String[] args) {
int[] myIntArray = {12, 32, 34};
int index = 0;
while (index < 3) {
System.out.println(myIntArray[index]);
index++;
}
}
输出:
12
32
34
在您的版本中, while 循环的主体是单行:System.out.println(myintarray[index]);
TA贡献1911条经验 获得超7个赞
这里的问题是,您没有在要进入 while 循环的代码周围放置大括号。您会看到,当 while 循环或 for 循环没有附加大括号时,在大多数语言中,循环只会考虑下一个命令在其中,这将是循环运行的唯一命令。
因此,当运行你的程序时,程序只重复“System.out.println(myintarray[index])”,并且从不增加索引,因此“myintarray[index]”的值永远停留在12。
所以,我们可以通过两种方式解决这个问题:
int index = 0;
while(index < 3)
{
System.out.println(myintarray[index]);
index++;
}
或者,如果我们想使用 for 循环,
for(int index = 0; index < 3, index++)
{
System.out.println(myintarray[index]);
}
TA贡献1963条经验 获得超6个赞
在没有大括号的 while 中,只有紧跟在 while 后面的语句才会被执行。
在您的情况下,这意味着只有 while 之后的第一个语句将被循环,即“System.out.println(myintarray[index]);”。
由于“index++;” 未达到时,您的索引将具有相同的值 0,因此您的程序将始终打印数组的第一个元素。您的代码范围将在大括号中转换为:
while(index < 3) {
System.out.println(myintarray[index]);
}
index++;
要执行多个语句,请将其全部括在大括号内。
while(index < 3) {
System.out.println(myintarray[index]);
index++;
}
添加回答
举报