簡體   English   中英

Java遍歷整數數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM