2010-02-25 27 views
19

如何遍歷可變長度的Java數組。通過可變長度的Java數組進行迭代

我想我會設置一個while循環,但是如何檢測到我已經到達數組的末尾。

我想我想是這樣的[只需要弄清楚如何代表myArray.notEndofArray()]

index = 0; 
while(myArray.notEndofArray()){ 
    system.out.println(myArray(index)); 
    index++; 
} 
+1

推薦使用的執行期間被改變爲一個循環,因爲你知道什麼時候執行將結束 – Woot4Moo 2010-02-25 03:55:52

回答

44
for(int i = 0; i < array.length; i++) 
{ 
    System.out.println(array[i]); 
} 

for(String value : array) 
{ 
    System.out.println(value); 
} 

第二個版本是「 for-each「循環,它適用於數組和集合。大多數循環都可以用for-each循環完成,因爲你可能不關心實際的索引。如果你真的關心我們的第一個版本的實際索引。

只是爲了保持完整性你可以做while循環是這樣的:

int index = 0; 

while(index < myArray.length) 
{ 
    final String value; 

    value = myArray[index]; 
    System.out.println(value); 
    index++; 
} 

但是,你應該使用一個for循環,而不是一個while循環,當你知道的大小(甚至帶有可變長度數組,你知道大小......每次都不一樣)。

5

數組有一個隱含的成員變量保持長度:

for(int i=0; i<myArray.length; i++) { 
    System.out.println(myArray[i]); 
} 

或者,如果使用> = Java5的,使用用於每個循環:

for(Object o : myArray) { 
    System.out.println(o); 
} 
3

你已經具體提到的一個「可變長度數組「,所以現有的兩個答案都沒有(正如我寫的那樣)是非常正確的。

Java沒有任何「可變長度數組」的概念,但它確實具有用於此功能的集合。任何集合(技術上的任何「可迭代」的正宗超)可繞在簡單,如本:

Collection<Thing> things = ...; 
for (Thing t : things) { 
    System.out.println(t); 
} 

編輯:有可能我誤解了他的意思通過「可變長度」。他可能只是意味着它是一個固定的長度,但不是每個實例都是相同的固定長度。在這種情況下,現有的答案會很好。我不確定是什麼意思。

0

這裏是一個例子,其中該陣列的長度的循環

import java.util.ArrayList; 
public class VariableArrayLengthLoop { 

public static void main(String[] args) { 

    //create new ArrayList 
    ArrayList<String> aListFruits = new ArrayList<String>(); 

    //add objects to ArrayList 
    aListFruits.add("Apple"); 
    aListFruits.add("Banana"); 
    aListFruits.add("Orange"); 
    aListFruits.add("Strawberry"); 

    //iterate ArrayList using for loop 
    for(int i = 0; i < aListFruits.size(); i++){ 

     System.out.println(aListFruits.get(i) + " i = "+i); 
     if (i == 2) { 
       aListFruits.add("Pineapple"); 
       System.out.println("added now a Fruit to the List "); 
       } 
     } 
    } 
}