Подтвердить что ты не робот

Итерация через массив Java переменной длины

Как выполнить итерацию по массиву Java переменной длины.

Думаю, я бы установил цикл while, но как бы я обнаружил, что достиг конца массива.

Я думаю, мне нужно что-то вроде этого [просто нужно выяснить, как представить myArray.notEndofArray()]

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

Ответ 1

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

или

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

Вторая версия представляет собой цикл "для каждого" и работает с массивами и коллекциями. Большинство циклов можно выполнить с помощью цикла for-each, потому что вам, вероятно, не нужен фактический индекс. Если вы действительно интересуетесь фактическим индексом нашей первой версии.

Просто для полноты вы можете сделать цикл while таким образом:

int index = 0;

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

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

Но вы должны использовать цикл for вместо цикла while, когда знаете размер (и даже с массивом переменной длины, который вы знаете, размер... он просто различен каждый раз).

Ответ 2

Массивы имеют неявную переменную-член, удерживая длину:

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);
}

EDIT: Возможно, я неправильно понял, что он имел в виду под "переменной длиной". Возможно, он имел в виду только фиксированную длину, но не каждый экземпляр имеет ту же фиксированную длину. В этом случае существующие ответы будут в порядке. Я не уверен, что имел в виду.

Ответ 4

здесь приведен пример, когда длина массива изменяется во время выполнения цикла

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