0

ユーザーに整数の入力を求めていますが、(オプションへの参照として)適切な整数を入力しない場合は、入力するまでプロンプトを再度表示したいと思います。

これまでのところ、これは私が持っているコードです:

           int logIn = 0;
    do {
        logIn = Integer.parseInt(JOptionPane.showInputDialog(null,
                "Please:"
                + "\n(Enter number value of option you would like to choose.)\n"
                + "\n1. Log In \n2. Register"));
    } while (1 > logIn || logIn < 2);

    int custIndex;

    if (logIn == 1) {
        custIndex = recommend.getCustomerIndex();
    } else {
        customers.printCustomers();
        custIndex = customers.readCustomers().size();
    }

    int options = 0;
    do {
        options = Integer.parseInt(JOptionPane.showInputDialog(null,
                "Would you like to:"
                + "\n(Enter number value of option you would like to choose.)\n"
                + "\n1. See your recommendations. \n2. See top rated books."
                + "\n3. See random books of the day. \n4. Exit."));
    } while (1 > options || options < 4);

唯一の問題は、アプリケーションがログインを正しく通過できないことです。ユーザーが1を入力すると、プロンプトが再度表示されます。また、ユーザーが2より大きい数値を入力すると、何があっても2番目のオプションに移動します。

どんな助けでもいただければ幸いです。

4

4 に答える 4

3

whileループロジックがオフになっているように見えます。ログインが1未満の場合、またはログインが2未満の場合(より大きい必要があります)、whileループが続行されます。

あなたはおそらく意味しました:

do ... while(logIn <1 || logIn> 2);

于 2012-02-08T23:56:13.940 に答える
3

あなたのwhile状態は

while (1 > logIn || logIn < 2)

つまり、ループを続行するには、入力が1未満または2未満である必要があります。あなたが欲しいのは

while (logIn < 1 || logIn > 2)

またはおそらくもっと読みやすく

while (logIn != 1 && logIn != 2)
于 2012-02-08T23:57:28.917 に答える
1

と置換する

 while (1 != logIn && logIn != 2);

したがって、logInの値が1および2と異なる場合、ループは続行されます。

于 2012-02-08T23:56:16.590 に答える
0
do {
    logIn = Integer.parseInt(JOptionPane.showInputDialog(null,
            "Please:"
            + "\n(Enter number value of option you would like to choose.)\n"
            + "\n1. Log In \n2. Register"));
} while (logIn != 1 && logIn != 2)

上記のようにコードのログインを更新します:)

于 2012-02-08T23:56:38.997 に答える