1

うるう年を計算するプログラムがありますが、1750 年以降しか機能しないため、ユーザーが 1750 年以降の数値のみを入力できるようにしたいと考えています。

System.out.println("Enter a year after 1750:");
    leapYear = in.nextInt();

    if(leapYear<1750){
        System.out.println("You have entered a year before 1750, please try again :");
        leapYear  = in.nextInt();
    }

私の解決策は、ifステートメントを入れることでした。ただし、これは、ユーザーが 1750 未満の値を 1 回入力した場合にのみ機能することを認識しています。彼らがもう一度やると、プログラムは次に進みます。「あなたは1750年より前の年に入りました。もう一度やり直してください:」というステートメントを、書き直さずに何度でも実行できる方法はありますか?

whileステートメントが機能する可能性があると考えていました(whileステートメントが機能する場合、無限ループを引き起こさずにどのように実行できますか)?

4

2 に答える 2

6

あなたは while ステートメントで正しい軌道に乗っています。無限に実行されないようにするのは非常に簡単です。ユーザーが正しい年を入力するとすぐに、ループ条件は false と評価されて終了します。

System.out.println("Enter a year after 1750:");
leapYear = in.nextInt();

while(leapYear < 1750){
     System.out.println("You have entered a year before 1750, please try again :");
     leapYear  = in.nextInt();
}

do-while繰り返しコードを減らすためにループを試すこともできます。

do{
    System.out.println("Please enter a year after 1750:");
    leapYear = in.nextInt();
}while(leapYear < 1750);

ユーザーは 1750 年以降の年を入力するように再度求められます。これにより、エラー メッセージが必要になります。

于 2015-06-18T20:13:35.043 に答える
2
while(leapYear<1750)

それ以外の:

if(leapYear<1750)
于 2015-06-18T20:13:48.843 に答える