[英]Java looping through integer array
考慮以下Java代碼:
int[] array = {1, 2, 3, 4, 5, 6};
for(int i : array) {
System.out.print(i + " ");
}
上面的代碼顯然打印了數組的內容。
1 2 3 4 5
我的問題是Java為什么不允許這樣做?
int[] array = {1, 2, 3, 4, 5, 6};
int i;
for(i : array) {
System.out.print(i + " ");
}
編輯:當我編譯第二個程序時,出現以下錯誤:
Main.java:14: error: bad initializer for for-loop
for(i : array) {
^
1 error
因為Java強制您在此處聲明變量。 JLS第14.14.2節使用以下語法定義了增強的for
循環:
EnhancedForStatement:
for ( {VariableModifier} UnannType VariableDeclaratorId : Expression ) Statement
EnhancedForStatementNoShortIf:
for ( {VariableModifier} UnannType VariableDeclaratorId : Expression ) StatementNoShortIf
UnannType
是要聲明的變量的類型。
它繼續指出,這種增強的for循環與此等效,用於遍歷Iterable
s。
for (I #i = Expression.iterator(); #i.hasNext(); ) {
{VariableModifier} TargetType Identifier =
(TargetType) #i.next();
Statement
}
...對於數組...
T[] #a = Expression;
L1: L2: ... Lm:
for (int #i = 0; #i < #a.length; #i++) {
{VariableModifier} TargetType Identifier = #a[#i];
Statement
}
顯然,該變量是循環內部的局部聲明變量。
顯示的錯誤是什么? 也許您應該初始化變量:
int i = 0;
您正在使用“增強型” for循環。 此功能在Java 1.5之后可用。 for循環的語法為
for(Object obj : List) {
...
}
如果您以其他格式編寫,將引發編譯錯誤。 基本上,您編寫的代碼在語法上是錯誤的。 這將是一個編譯錯誤。
您可以參考Java中for循環的增強語法是什么?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.