1

私はデータ検証を備えたローン計算機に取り組んでいます。私はすべてを書きました。私が理解できない唯一のことは、ユーザーが「y / nを続行しますか?:」と尋ねられるwhileループを記述し、ユーザーがy / Yと入力した場合にのみプログラムを続行し、ユーザーがn / Nと入力すると、他の入力では「無効です。YまたはNしか入力できません」などのエラーメッセージが表示されます。したがって、ユーザーが「x」を入力すると、エラーメッセージが表示されます。

else if句を試しました。また、プログラムの残りの部分で使用したメソッドを使用してデータを検証しようとしましたが、文字列を検証する方法がわかりません。プリミティブデータ型でのみ実行できます。

これは私が今のところループを書く方法を知っている唯一の方法です、問題はそれが単にY以外のものでプログラムを終了するということです。

割り当てのオプションはJOptionPaneを使用することですが、それをwhileループに組み込んで、[はい]ボタンと[いいえ]ボタンを表示させる方法がわかりません。

    String choice = "y";

    while (choice.equalsIgnoreCase("y")) {

    // code here

    System.out.print("Continue? (y/n): ");
        choice = sc.next();
    }
   }
4

4 に答える 4

1
while(true) {
    //Do something
    String choice;
    boolean validChoice = false;
    boolean breakLoop = false;
    while(!validChoice) {
        System.out.print("Stay in loop(Y/N)?");
        choice = sc.next();
        if(choice.equalsIgnoreCase("Y")) {
            validChoice = true;
        }
        if(choice.equalsIgnoreCase("N")) {
            validChoice = true;
            breakLoop = true;
        }
        if(!validChoice) {
            System.out.print("Error! Pick only Y/N");
        }
    }
    if(breakLoop) {
        break;
    }
    //Do something
}
于 2013-02-02T16:40:54.387 に答える
0

どうですか

while(true) {
   // do something
   // get user input (Y or N)
   if(input.equals("Y") {
      continue;
   } else if(input.equals("N")) {
      break;
   } else {
       System.out.println("entered option not valid, please use Y or N");
   }
}
于 2013-02-02T16:39:29.133 に答える
0

基本的に、2つのループが必要です。1つは作業を実行し、もう1つはユーザー検証のプロンプト内にあります。

boolean isContinuing = true;

while (isContinuing) {
    // do work

    boolean inputIsInvalid = true;
    while (inputIsInvalid) {
      System.out.print("Continue? (y/n): ");

      String choice = sc.next();

      if ("y".equalsIgnoreCase(choice)) {
          inputIsInvalid = false;
      }
      else if ("n".equalsIgnoreCase(choice)) {
          inputIsInvalid = false;
          isContinuing = false;
      }
      else {
          System.err.print("Error: Only valid answers are Y/N.");
      }
    }
}

ノード:ステートメントの代わりにブール変数を使用してbreakいます。これにより、コードがよりわかりやすく読みやすくなります。

于 2013-02-02T16:49:08.207 に答える
0

説明方法を紹介するのが一番いい方法だと思います。

while (userWantsToContinue()) {
    // do another round
}

そして理想的には、これをUI抽象化であるインターフェース上のメソッドにすることさえできます:

while (user.wantsToContinue()) {
    // do another round
}

動作をUI実装から切り離します。

于 2013-02-02T16:49:39.270 に答える