为什么这个数组不接受用户输入?

时间:2013-03-28 19:46:47

标签: java arrays

这是更大任务的一部分。在这里,我基本上需要接受用户输入,直到用户键入0.这些双打需要添加到数组中。由于某种原因,它们现在没有被添加到阵列中。有什么帮助吗?

public static void main(String[] args){
    Scanner scanner = new Scanner(System.in);
    double[] inputArray = new double[3];
    double input;
    do{
        input = scanner.nextDouble();

    for(int i = 0; i < 3; i++){
        inputArray[i] = input;
    }
    }
    while(input != 0);

    System.out.println("Element 0:" + inputArray[0]);
    System.out.println("Element 1:" + inputArray[1]);
    }

1 个答案:

答案 0 :(得分:4)

你继续迭代直到input为0 ...所以在循环的最后一次迭代之前,我们知道input 为0

现在看看你在while循环中正在做什么:

for(int i = 0; i < 3; i++){
    inputArray[i] = input;
}

您正在使用当前值input替换所有数组中的元素。

因此,当您退出循环时,您刚刚将所有元素替换为0。

List<Double>与合适的实施方式(例如ArrayList<Double>)一起使用并在list.add(input)循环中调用while会好得多。

然后打印出列表中的每个元素:

for (Double value : list) {
    System.out.println(value);
}

或者如果你真的想要索引:

for (int i = 0; list.size(); i++) {
    System.out.println("Element " + i + ": " + list.get(i));
}

如果 使用数组,则应跟踪已设置的项目数(在while循环中增加一个计数器)并仅设置值。如果阵列中的空间不足,也不要忘记终止循环!