增加数组';Java中的s值

增加数组';Java中的s值,java,Java,为什么这段代码不向数组的值中添加“1”? (我用“增强的For循环”编写了它;当我用“old 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 addO

为什么这段代码不向数组的值中添加“1”? (我用“增强的For循环”编写了它;当我用“old 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]);
        }
    }
}
公共类增强ForLoop{
公共静态void main(字符串[]args){
int[]list={1,2,3,4,5,6,7,8,9,10};
System.out.println(“调用前列表添加”);
打印列表(列表);
System.out.println(“调用addOne”);
addOne(列表);
System.out.println(“调用addOne后的列表”);
打印列表(列表);
}               
公共静态void addOne(int[]列表){
for(int val:list){
val=val+1;
}
}
公共静态无效打印列表(int[]列表){
System.out.println(“索引,值”);
for(int i=0;i
您没有增加数组值。是否增加

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

您增加的值是针对声明的变量
val
,该变量是数组当前迭代索引变量的断开连接副本。

来自for each doc:“因此,for each循环不可用于筛选。同样,它不可用于需要在遍历列表或数组时替换其中元素的循环。”简而言之,在执行只读操作时,请使用for each。您误解了增强for循环的目的。用户尝试通过传递值,而不是通过引用。因此,它不会递增。请检查它。谢谢。因此,我们不能使用“增强for循环”来递增数组的值,对吗?@ViswanathD“只需检查”是的,您应该这样做。@Shirin我们可以使用任何迭代过程,但增量应该在原始字段(列表)上进行,而不是在传递的值上进行。@Shirin是的,在您的情况下
val
不表示数组引用
val = val + 1;   //will not increase array value it will increase val value