2010-02-25 15 views
19

¿Cómo puedo iterar sobre una matriz Java de longitud variable?Iteración a través de una matriz Java de longitud variable

Supongo que configuraría un ciclo while, pero cómo detectaría que llegué al final de la matriz.

Supongo que quiero algo como esto [sólo tiene que encontrar la manera de representar myArray.notEndofArray()]

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

uso recomendado es un bucle ya que saber cuándo va a terminar la ejecución – Woot4Moo

Respuesta

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

o

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

La segunda versión es una " para cada bucle y funciona con matrices y colecciones. La mayoría de los bucles se pueden hacer con el bucle for-each porque probablemente no le importe el índice real. Si te importa el índice real, utiliza la primera versión.

simplemente para la corrección que puede hacer el bucle while de esta manera:

int index = 0; 

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

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

embargo, usted debe utilizar un bucle en lugar de un bucle mientras que cuando se conoce el tamaño (e incluso con una matriz de longitud variable que se sabe el tamaño ... es simplemente diferente cada vez).

5

matrices tienen una variable miembro implícita la celebración de la longitud:

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

Alternativamente, si el uso de> = java5, utilizar una para cada bucle:

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

Usted ha mencionado específicamente una "variable length array "en su pregunta, por lo que ninguna de las dos respuestas existentes (mientras escribo esto) es correcta.

Java no tiene ningún concepto de "matriz de longitud variable", pero sí tiene colecciones que sirven en esta capacidad. Cualquier colección (técnicamente cualquier "Iterable", un supertipo de Colecciones) se puede conectar el control como simplemente como esto:

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

EDIT: que es posible que no he entendido lo que quería decir con 'longitud variable'. Tal vez solo quiso decir que es una longitud fija, pero no todas las instancias tienen la misma longitud fija. En cuyo caso las respuestas existentes estarían bien. No estoy seguro de lo que significaba.

0

aquí es un ejemplo, donde se cambia la longitud de la matriz durante la ejecución del bucle

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 "); 
       } 
     } 
    } 
} 
Cuestiones relacionadas