2015-03-27 3 views
1

Почему этот код не добавляет «1» к значениям массива? (я написал его "Enhanced For Loop", когда я писал это с "стара для", он работалУвеличение значений массива в Java

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 для каждого цикла не используется для фильтрации. Точно так же нельзя использовать циклы, где вам нужно заменить элементы в списке или массиве, когда вы проходите его ». _ Короче говоря, используйте для каждого, когда вы выполняете операцию только для чтения. –

+0

Вы неправильно поняли цель повышения для цикла – Touchstone

ответ

1

Вы не увеличивая массив values.Do

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» для увеличения значений массива, не так ли? – Shirin

+0

@ViswanathD * «Просто проверьте» * Да, вы должны это сделать. – Tom

1

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

Смежные вопросы