2017-03-13 21 views
0

私は自分のコードにわずかな問題が発生しました。つまり、私のメニュー構造では、誰かがメニューに与えられた選択肢のどれも入力しないとき、私はデフォルトオプションを持っています。だから、私は、プログラムが正しい答えを入力するまで与えられたオプションをループすることを望みます。しかし、私は実行中にキラーループを取得し続けるので、私はフラグなどの概念をかなり理解しているかどうかはわかりません。ここに問題があります:メニュー構造とwhileループ?

  else 
    { 
     while (!choice.equals("a") || !choice.equals("b")||!choice.equals("c")) 
     { 
      System.out.println("It seems you have made a mistake. Please select one of the options: "); 
      System.out.println("a) Create a computer-generated matrix"); 
      System.out.println("b) Input your own matrix"); 
      System.out.println("c) Quit"); 
      choice= kbReader.nextLine(); 

     } 

助けてください!

答えて

0

問題はあなたのロジックにあります。

"not a"または "not b"または "not c"のいずれかを指定します。

選択肢がAであるとします。これは、Aが "not B"または "not C"のようにキラーループを作成します。

コードをORからANDに変更してみてください。そうすれば、whileループは、その選択肢がA、B、Cの繰り返しではないことをテストする必要があります。

だからあなたの最初の行は次のようになります。

while (!(choice.equals("a") || choice.equals("b")|| choice.equals("c"))) { 

それとも...

while (!choice.equals("a") && !choice.equals("b") && !choice.equals("c"))) { 

は、あなたがそれが役に立ったと評価していホープ!

0

私はあなたのループのロジックは

while (!(choice.equals("a") || choice.equals("b")|| choice.equals("c"))) { 
      System.out.println("It seems you have made a mistake. Please select one of the options: "); 
      System.out.println("a) Create a computer-generated matrix"); 
      System.out.println("b) Input your own matrix"); 
      System.out.println("c) Quit"); 
      choice= kbReader.nextLine(); 

     } 
されるべきだと思います
関連する問題