0

私はプログラミングにまったく慣れておらず、UniでJava 101を取得しており、Webを検索して何が問題なのかを理解せずに、この問題と1時間戦っています。

したがって、演習は、数値を入力して読み取り、ユーザーが 0 を入力してプログラムが終了するまで合計するプログラムを作成することです。私の問題は、プログラムが最初に入力した数字を無視することです。常に 2 回入力する必要があります。ループが問題のようですが、どうすればわかりますか? これまでの私のコードは次のとおりです。

import java.util.Scanner;

public class SumOfMultipleNumbers {

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int sum = 0;               

        while (true) {
            int read = Integer.parseInt(reader.nextLine());
            if (read == 0) {
                break;
            }

            read = Integer.parseInt(reader.nextLine());
            sum += read;

            System.out.println("Sum now: " + sum);
        }

        System.out.println("Sum in the end: " + sum);
    }
}

では、コードを修正して、数値を入力するたびに加算されるようにするにはどうすればよいでしょうか。

4

4 に答える 4

1

あなたが呼んでいる

read = Integer.parseInt(reader.nextLine());

ループごとに 2 回

宣言時に1回read

int read = Integer.parseInt(reader.nextLine());

そしてもう一度、ゼロをチェックした後

read = Integer.parseInt(reader.nextLine());

あなたは一度だけそれをする必要があります


おそらく使用したいのはdo whileループです

do
{
    // read variable in
    // print for sum
}while(variableReadIn != 0);
于 2013-11-04T15:10:50.527 に答える
0

新しい行が Scanner から読み取られるたびreader.nextLine()に、この関数を呼び出してからゼロをチェックし、それを合計に追加します。

while(true)ループを使用するだけでなく、次のような条件でループを使用することをお勧めします。while(read != 0)

最後に、破損を防ぐためにスキャナを閉じる必要があります。このプログラムでは、大きな害を及ぼすことはありませんが、忘れてよいというわけではありません。

import java.util.Scanner;

public class SumOfMultipleNumbers {

    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);

        int sum = 0;

        int read;

        do {
            sum += read;

            System.out.println("Sum now: " + sum);

            read = Integer.parseInt(reader.nextLine());
        } while (read != 0)

        System.out.println("Sum in the end: " + sum);

        reader.close();
    }
}
于 2013-11-04T15:21:01.510 に答える