[英]For Loop doesn´t print out correctly
我創建了一個 for 循環。
我該怎么做才能打印出來:test0 test1 test2 test3
for (int i = 0; i < 4; i++) {
int x = 0;
System.out.println("test"+x);
x++;
}
但它沒有打印出來: test0 test1 test2 test3
它打印出來: test0 test0 test0 test0
您需要將“x”更改為“i”,因為“i”是索引變量,每次迭代都會增加 1。 "x" 是一個局部變量並且將始終為 0,因為您每次迭代都會重新定義它。 你可以這樣做:
for(int i = 0; i < 4; i++) {
int x = 0;
System.out.println("test" + i);
x++;
}
或這個:
int x = 0;
for(int i = 0; i < 4; i++) {
System.out.println("test" + x);
x++;
}
因為您在每次迭代中都定義了x
。 將x
放在循環之外。 它上面。
int x = 0
for (...) { }
for (int i = 0; i < 4; i++) {
System.out.println("test"+i);
}
或 // 如果你堅持使用 x!
for (int i = 0; i < 4; i++) {
int x = i;
System.out.println("test"+x);
}
您可以在Oracle 'for Statement' 文檔中找到一個非常相似的示例:
for 語句提供了一種在一系列值上迭代的緊湊方法。 程序員經常將其稱為“for 循環”,因為它重復循環直到滿足特定條件。 for 語句的一般形式可以表示如下:
for (initialization; termination; increment) { statement(s) }
使用此版本的 for 語句時,請記住:
- 初始化表達式初始化循環; 它在循環開始時執行一次。
- 當終止表達式的計算結果為假時,循環終止。
- 增量表達式在循環的每次迭代后調用; 這個表達式增加或減少一個值是完全可以接受的。
你需要在循環外聲明x
,否則每次迭代后它都會被設置為 0 。 因此,在您的情況下,它將是:
int x = 0;
for (int i = 0; i < 4; i++) {
System.out.println("test" + x);
x++;
}
對於這個例子,你不需要聲明兩個變量,你可以通過使用為循環聲明的變量來獲得相同的結果:
for (int i = 0; i < 4; i++) {
System.out.println("test" + i);
}
由於這篇文章有很多類似的答案,我將參考另一種執行此特定循環的方法,該方法取自Oracle 的“for 語句”文檔,即“增強的 for 循環遍歷數組”:
int[] numbers = {0,1,2,3};
for (int item : numbers) {
System.out.println("test" + item);
}
您使用賦值運算符=
將值0
分配給x
。 您的變量x
每次更新為0 。 所以它打印出來: test0 test0..... 因為它在for循環內。
如果變量x
是在 for 循環之外聲明的,此時x
未更新為0
,則它剛剛更新為x=x+1
表示++
運算符。 所以它會增加並完美地工作。 還有一件事,這里的x
是 for 循環的全局變量,可以在 for 循環內部訪問。 請看下面的代碼。
int x = 0;
for (int i = 0; i < 4; i++) {
System.out.println("test"+x);
x++;
}
您已使用 x 作為打印出的變量。 您應該考慮變量 x 的范圍。 每次循環再次運行時,x 將其值重置為 0,因為它是在循環內聲明的。 最后增加 x 對您沒有幫助,因為在運行下一次循環迭代時 x 的值會重置為 0。 相反,用i替換 x 或在循環外聲明一個新變量。
for(int i = 0; i < 4; i++) {
int x = 0;
System.out.println("test" + i);
x++;
}
或者你可以做
int a = 0;
for(int i = 0; i < 4; i++) {
System.out.println("test" + a);
a++;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.