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

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

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

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

index = 0;
while(myArray.notEndofArray()){
  system.out.println(myArray(index));
  index++;
}
21
задан user1803551 22 November 2018 в 03:38
поделиться

3 ответа

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, когда вы знаете размер (и даже в случае массива переменной длины вы знаете размер... он просто разный каждый раз).

51
ответ дан 29 November 2019 в 06:36
поделиться

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

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

Альтернативно, если используется >=java5, используйте цикл for each:

for(Object o : myArray) {
    System.out.println(o);
}
5
ответ дан 29 November 2019 в 06:36
поделиться

Вы конкретно упомянули "массив переменной длины" в вашем вопросе, таким образом, ни один из существующих двух ответов (поскольку я пишу это) не совершенно правилен.

Java не имеет никакого понятия "массива переменной длины", но это действительно имеет Наборы, которые служат в этой способности. Любой набор (технически любой "Повторяемый", супертип Наборов) может быть циклично выполнен по так просто:

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

РЕДАКТИРОВАНИЕ: возможно, что я неправильно понял то, что он подразумевал под 'переменной длиной'. Он, возможно, просто подразумевал, что это - фиксированная длина, но не каждый экземпляр та же фиксированная длина. В этом случае существующие ответы были бы прекрасны. Я не уверен, что было предназначено.

4
ответ дан 29 November 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: