Что делает для (int i: x)? [Дубликат]

1

Я новичок в Java. Я читал какое-то решение вопроса, и я столкнулся с этим:

        int[] ps = new int[N];
        for (int i = 0; i < N; i++)
            ps[i] = input.nextInt();

        int[] counts = new int[1005];
        for (int p : ps)
            counts[p]++;

Что делают последние две строки?

  • 0
    Переменная p располагается в массиве ps . Вы можете немного поиграть с ним, чтобы увидеть, как он работает, например, вывести значение p в цикле.
  • 0
    это улучшено для цикла. р является локальной переменной
Теги:
for-loop

4 ответа

2
Лучший ответ

Это цикл для каждого цикла. Он устанавливает p в первый элемент ps, затем запускает тело цикла. Затем он устанавливает p во второй элемент ps, затем запускает тело цикла. И так далее.

Это примерно соответствует:

for(int k = 0; k < ps.length; k++)
{
    int p = ps[k];
    counts[p]++;
}
2

Для каждого цикла (расширенный или расширенный цикл):

Цикл for-each, введенный в Java5. Он в основном используется для перемещения элементов массива или коллекции. Преимущество для каждого цикла заключается в том, что он исключает возможность ошибок и делает код более удобочитаемым.

Синтаксис

for(data_type variable : array | collection){}  

Источник: Java для каждого цикла

В вашем случае этот цикл выполняет итерацию Array

Эквивалентный код без каждой циклы

for (int i=0;i<ps.length;i++){
int p=ps[i];
counts[p]++;
}
  • 0
    p не является индексом его элементов массива ps
  • 0
    @singhakash, я пытался объяснить ему цикл For-Each, как счетчик увеличивается, не переходя к логическому объяснению, все еще редактируя его !!
0

Линия выполняет итерирование по каждому индексу массива, вынимая его значение в последовательности в переменной p Вы можете проверить

for (int p : ps){            // if ps is {1,2,3}
   System.out.print(p+" ");  // it will print 1 2 3
   counts[p]++;
}
0

Это цикл for. for (int p: ps) выполняет итерацию по ints в массиве ps int

Ещё вопросы

Сообщество Overcoder
Наверх
Меню