0

This is my code. For any kind of input i get the output 0 0 0 0 0 0 0 0 0 0 I can't understand why?

import java.util.*;
class TestArray{
    int[] a=new int[10];
    TestArray(){
        for(int ele:a){
            Scanner src=new Scanner(System.in);
            ele=src.nextInt();
        }
    }
}
class TestArrayLoop{
    public static void main(String[] args){
        TestArray a=new TestArray();
        for(int ele:a.a){
            System.out.print(ele+" ");
        }
    }
}
4

2 回答 2

1

您误解了数组元素引用的工作方式。您不能使用for-each 循环来更改数组中元素的值

在这段代码中

for(int ele:a){
    Scanner src=new Scanner(System.in);
    ele=src.nextInt();
}

您正在声明一个新变量ele,该变量将设置为数组中的每个下一个值。当你这样做

ele=src.nextInt();

您正在更改变量的值,而不是数组中的元素。使用普通的索引 for 循环。并且不要Scanner在每次迭代时创建一个新对象。

Scanner src=new Scanner(System.in);
for (int i = 0; i < a.length; i++) {
   a[i] = src.nextInt();
}
于 2013-09-21T15:51:29.710 回答
0

这是错误的:

    for(int ele:a){
        Scanner src=new Scanner(System.in);
        ele=src.nextInt();
    }

使用带有索引的传统循环

于 2013-09-21T15:49:17.013 回答