从用户通过构造函数获取输入时出现意外结果

时间:2013-09-21 15:23:33

标签: java arrays constructor

这是我的代码。对于任何类型的输入,我得到输出0 0 0 0 0 0 0 0 0 0 我不明白为什么?

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+" ");
        }
    }
}

2 个答案:

答案 0 :(得分:1)

您误解了数组元素引用的工作原理。你不能使用for - 每个循环来改变数组中元素的值

在此代码中

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();
}

答案 1 :(得分:0)

这是错误的:

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

使用带索引的传统循环