2017-09-26 7 views
0

私はJavaで簡単なコンソールアプリケーションを作成していますが、問題があります。これは私のコードです:whileループとswitch文を使用しているスキャナ

boolean isActive = true; 
Scanner scanner = new Scanner(System.in); 

do { 
try { 
    int option = scanner.nextInt(); 

    switch (option) { 

     case 1: 
      System.out.println("Search By Registration number: " + 
        "\n------------------------------"); 
      System.out.println("Enter registration number!"); 
      String regNumber = scanner.nextLine(); 
      if (regNumber == incorrect) { 
       continue; // return to case 1 and ask enter regnumber one more time 
      } else { 
       // do stuff 
      } 

      break; 

     case 2: 
      System.out.println("Exit the search option: "); 
      isActive = false; 
      break; 

     default: 
      System.out.println("Your selection was wrong. Try one more time!"); 
      break; 

    } 
} catch (InputMismatchException ex) { 
    System.out.println("Your selection was wrong. Try one more time!"); 
} 
scanner.nextLine(); 
} while (isActive); 

エラーが発生した場合、私はケース1に戻ることはできません。したがって、エラーが発生した場合、ユーザーはもう一度登録番号を入力するなどのメッセージを受け取る必要があります。

答えて

0

正しいものではない入力を待ち受けるために、regNumberの入力の周りにループを置くことができます。

String regNumber = incorrect; 
// String is a reference type, therefore equality with another String's value 
// must be checked with the equals() method 

while(regNumber.equals(incorrect)){ 

    if (regNumber.equals(correct)) { 
     // Do something if input is correct 
    } 

} 

これは、あなたが望む正確な解決策ではないかもしれませんが、同じ概念を考えて、あなたのプログラムに適用してください。文字列比較の詳細については、thisも参照してください。これが助けて欲しい!

1

あなたはregNumber

if (regNumber.equals(incorrect)) { 
     System.out.println("Incorrect!"); 
     continue; 
} else { 
     System.out.println("Correct!"); 
} 

をチェックするときのequals()を使用する必要があります。しかし、その後も、あなたのプログラムが正常に動作しない、この上文字列regNumber = scanner.nextLine()を変更:

String regNumber = scanner.next(); 
関連する問題