0

これはより大きな課題の一部です。ここでは、基本的に、ユーザーが 0 を入力するまでユーザー入力を受け入れる必要があります。これらの double を配列に追加する必要があります。何らかの理由で、それらは現在配列に追加されていません。何か助けはありますか?

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]);
    }
4

1 に答える 1

4

が 0 になるまで反復を続けているため、ループが終了する前の最後の反復では、それが 0 になるinputことがわかっています。input

whileループで何をしているか見てみましょう。

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

配列内のすべての要素を の現在の値に置き換えていますinput

したがって、ループを終了するまでに、すべての要素を 0 に置き換えています。

List<Double>適切な実装 (例: ) で aを使用し、ループ内で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));
}

配列を使用する必要がある場合は、既に設定した項目の数を追跡し (ループ内でインクリメントされたカウンターを使用) 、ループの反復ごとに配列に値を1 つwhileだけ設定する必要があります。配列内のスペースがなくなった場合も、ループを終了することを忘れないでください!

于 2013-03-28T19:49:16.193 に答える