2017-10-23 12 views
1

((将来の崇拝に使用できるように削除しないでください)if文を使用して複数のエラーを出力する文字列でヘルプを必要とする人のために。 Scannerとregex.Patternをインポートすることを忘れないでください。混乱を軽減し、使用された私の特質を削除するために編集されました。同時に複数のエラーを報告する

public static boolean checkPass(String s) { 
    Pattern p = Pattern.compile("[bB]{2}[0-9]{4}; 
    return p.matcher(s).find(); 
} 

public static void main(String[] args) { 

    String inputMessage = "Enter a code to validate: "; 
    String userInput = " "; 
    Scanner input = new Scanner(System.in); 

    System.out.println(inputMessage); 
    userInput = input.nextLine(); 

    while (userInput.length() != 6 || !checkPass(userInput)) { 

    if (userInput.charAt(0)!= 'b') 
     System.out.println("First Character is not a b or a B"); 
    if (userInput.charAt(1)!= 'b') 
     System.out.println("Second character is not a b or B"); 
    if (!Character.isDigit(userInput.charAt(2))) 
     System.out.println("Third character is not digit"); 

     System.out.println("Code: " + userInput + " is not valid"); 
      userInput = input.nextLine(); 
    } 



    System.out.println("code: " + userInput + " is valid"); 



} 

}

+0

あなたは私には正常に見えるんでした何。あなたが「ハングアップ」していることを正確に伝えることはできますか? – Nishit

+0

PS:あなたは宿題を完了するのに助けを受けるために十字架につけられません。 netflixを見ている間にあなたの宿題をやるように他の人に依頼したなら、あなたは十字架につけられます。 :) – Nishit

答えて

0

if (userInput.charAt(2) != 0-9)...は範囲9から0ではないというuserInputの2位で文字をチェックしません。文字が-9ではないことをチェックします。 charは負ではありません。したがって、任意の文字---文字と句読点でさえ---がこのテストに合格します。何をしたい

のいずれかです:

if (userInput.charAt(2) < '0' || userInput.charAt(2) > '9') 
    ... 

または

if (!Character.isDigit(userInput.charAt(2))) 
    ... 
+0

if文にすべてを変更すると、クラスに必要なサンプルコードに対して他の部分が十分に機能するように見えました。再び助けてくれてありがとう。私は十分なポイントがまだないので私はupvoteを傾ける。助けをありがとう! – BUBBLETRON

0

シンプルなソリューション。

  1. 入力を確認するコードをメソッドに挿入します。
  2. このメソッドからList<String>を返します。
  3. エラーごとに文字列をリストに追加します。
関連する問題