Увеличение значений массива в Java

1

Почему этот код не добавляет значения "1" к массиву? (Я написал его "Enhanced For Loop", когда я написал его со "старым For", он сработал.

public class EnhanceForLoop {
    public static void main(String[] args) {

            int[] list = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

            System.out.println("List before call addOne");
            printList(list);

            System.out.println("Calling addOne");
            addOne(list);

            System.out.println("List after call addOne");
            printList(list);
    }               

    public static void addOne(int[] list) {
        for (int val : list) {
            val = val + 1;
        }
    }

    public static void printList(int[] list) {
        System.out.println("index, value");
        for (int i = 0; i < list.length; i++) {
            System.out.println(i + ", " + list[i]);
        }
    }
}
  • 2
    Из документа for-each: «Следовательно, цикл for-each нельзя использовать для фильтрации. Точно так же он не может использоваться для циклов, где необходимо заменять элементы в списке или массиве при его прохождении». Короче говоря, используйте for-each при выполнении операции только для чтения.
  • 0
    Вы неправильно поняли цель повышения для цикла.
Теги:

2 ответа

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

Вы не увеличиваете значения массива.

public static void addOne(int[] list){
     for(int i=0;i<list.length;i++){
                list[i] = list[i] + 1;
         }
}

Ниже утверждения

val = val + 1;   //will not increase array value it will increase val value
  • 0
    пользователь пытается передать по значению, а не по ссылке. Таким образом, это не будет увеличиваться. Просто проверь это
  • 0
    Спасибо. Итак, мы не можем использовать «Enhanced For Loop» для увеличения значений массива, верно?
Показать ещё 7 комментариев
1

Значение, которое вы увеличиваете, - это объявленная переменная val, которая отключает копию массива, которая в настоящее время выполняет итерацию переменной индекса.

Ещё вопросы

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