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++;
}
添加回答
舉報