0

入力が1未満で1000より大きい場合に実行されると想定される単純なdowhileループを試しています。それ以外の場合は、ループで正しい数値を入力するようにユーザーに要求する必要があります。現在実行しているように見えるのは、ループをもう一度繰り返し、正しい入力を要求してから、終了メッセージを表示することです。条件が満たされている場合、なぜそれが繰り返されているのかわからない

String name = JOptionPane.showInputDialog(null,
        "Please enter students lastname");

int input = Integer.parseInt(JOptionPane.showInputDialog(null,
        "Please enter students ID"));

do {
    JOptionPane.showMessageDialog(null,
            "Please enter a student ID within the correct parameters");
    input = Integer.parseInt(JOptionPane.showInputDialog(null,
            "Please enter students ID"));
} while (input < 1 && input > 1000);

// Output dialog with user input
JOptionPane.showMessageDialog(null, "StudentID: " + input
        + "\nStudent Last: " + name);
4

3 に答える 3

5

ダイアログを少なくとも2回表示しています。1回はループの前、もう1回はループ内です。

do-whileは、ループが少なくとも1回実行されるまで、条件をテストしません。

次のいずれかを実行できます。

  • 最初の呼び出しを削除して、入力ダイアログを表示します。
  • または、do-whileループをwhileループに変更します。

さらに、ループテストに関する@GrailsGuyのコメントを参照してください。現在のテストは常に失敗します。

于 2013-03-19T18:24:43.753 に答える
1

印刷されたステートメントのコメントを読んでいるので、CONDITIONは正しくないと思いますが、あなたが必要だと思います

 while (input > 1 && input < 1000);

IDは負の数であってはならないからです。

ID値がの間にある場合、この条件が真であることを忘れないでください2 to 999

あなたがコメントしたように:明確にするために、ユーザーが範囲外の数値(1〜1000)、つまり2005を入力した場合、その条件が満たされるまで、範囲内の数値を入力するようにユーザーに求めるループを循環させたいと思います

私のコードが何であるかを理解するためにコメントを読んでください:

input = -1;
while(input < 1 || input > 1000){ 
//    ^              ^ OR greater then 1000
// either small then 1   
}

注意:いずれかの条件が失敗したため、ANDの代わりにORをパントしました。ループを続行する必要があります。

于 2013-03-19T18:27:23.447 に答える
-2

私はそれを:で変更しwhileます

int input = Integer.parseInt(JOptionPane.showInputDialog(null,
    "Please enter students ID"));
while(input < 1 || input > 1000) {
    // Your stuff
}

説明

私が間違っていたと思うのは、そもそも、1未満で1000を超える数値はあり得ないということです。したがって、明らかに、有効な入力は指定された範囲外である必要があります(つまり、 from -Infinityto 0 OR from 1001to Infinity)。

次に、別の回答で言及されていること:ループは常に少なくとも1回実行され、条件が真であるdo...while限り繰り返されます。ループに入るwhileに入力が読み取られているので、「確認入力」の値は?always takes place... What's the need to request a correction on a possibly correct

私が間違っていたと思うのは、検証ルールの意味についての誤解です。

入力が1未満で1000超える場合に実行されると想定される単純なdowhileループを試しています

andという言葉はどういう意味ですか?これは、入力が指定された範囲外でなければならないことを意味すると思います。

于 2013-03-19T18:27:36.763 に答える