2010-02-25 3 views
19

Comment effectuer une itération sur un tableau Java de longueur variable.Itération via un tableau Java de longueur variable

Je suppose que je voudrais configurer une boucle while, mais comment pourrais-je détecter que j'ai atteint la fin de la matrice.

Je suppose que je veux quelque chose comme ça [juste besoin de savoir comment représenter myArray.notEndofArray()]

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

recommandé l'utilisation est une boucle puisque vous savez lorsque l'exécution prendra fin – Woot4Moo

Répondre

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

ou

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

La deuxième version est un " pour chaque "boucle et cela fonctionne avec des tableaux et des collections. La plupart des boucles peuvent être faites avec la boucle for-each parce que vous ne vous souciez probablement pas de l'index réel. Si vous vous souciez de l'index réel nous la première version.

Juste pour être complet que vous pouvez faire la boucle while cette façon:

int index = 0; 

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

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

Mais vous devez utiliser une boucle au lieu d'une boucle while lorsque vous connaissez la taille (et même avec un tableau de longueur variable que vous connaissez la taille ... c'est juste différent à chaque fois).

5

Les tableaux ont une variable membre implicite tenant la longueur:

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

Alternativement si vous utilisez> = java5, utilisez un pour chaque boucle:

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

Vous avez mentionné spécifiquement un « Variable- longueur array "dans votre question, donc aucune des deux réponses existantes (que j'écris ceci) n'est juste.

Java n'a aucun concept de "tableau de longueur variable", mais il possède des collections, qui servent à cette capacité. Toute collection (techniquement une « Iterable », un super-type des collections) peut être mis en boucle sur aussi simple que cela:

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

EDIT: il est possible d'avoir mal compris ce qu'il voulait dire par «longueur variable. Il a peut-être simplement voulu dire que c'est une longueur fixe, mais toutes les instances n'ont pas la même longueur fixe. Dans ce cas, les réponses existantes iraient bien. Je ne suis pas sûr de ce que ça voulait dire.

0

ici est un exemple, où la longueur du tableau est modifiée lors de l'exécution de la boucle

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 "); 
       } 
     } 
    } 
} 
Questions connexes