Java расширенный цикл - PullRequest
0 голосов
/ 01 мая 2018

Пожалуйста, объясните мне пошаговый вывод этого кода:

public class My {
    public static void main(String[] args) {
        int[] a = {1,2,3,4,1};
        for (int n : a) {
            a[n] = 0;
        }
        for (int n : a) {
            System.out.println(n);
        }
    }
}

Я знаю, что это расширенный цикл. Но не понимаю, как это работает с a[n]=0 Почему этот код выводит 00301?

Ответы [ 3 ]

0 голосов
/ 01 мая 2018

Этот код фактически заменяет значение n-го индекса, где n - это значение, назначенное n при обходе

0 голосов
/ 02 мая 2018

При переборе массива a [] он меняет значение массива. Вот почему a[2] and a[4] никогда не изменяется.

0 голосов
/ 01 мая 2018

Вы можете отладить это, добавив оператор println:

    for (int n : a) {
        System.out.println("Changing element " + n + " of array from " + a[n] + " to 0");
        a[n] = 0;
    }

Вывод этого:

Changing element 1 of array from 2 to 0
Changing element 0 of array from 1 to 0
Changing element 3 of array from 4 to 0
Changing element 0 of array from 0 to 0
Changing element 1 of array from 0 to 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...