2017-08-17 5 views
-1

を返しません数字が入っていて、空白ではない/入力キーが押された。方法は、私は、ユーザからの文字列の入力を取得し、4つの物事を検証することになっているメソッドを持って更新文字列

これらの問題が発生すると、エラーmsgが出力され、メソッドが再度呼び出されてユーザーに入力を促します。文字列が要件を満たす場合、メソッドはStringを返します。

ほとんどの場合、この方法は意図したとおりに動作しますが、誤ったrepsonseを入力した場合は、エラーが表示された後でも、最初に入力した正しい応答を返します。誰かがなぜこれが起こっているのか説明してもらえますか?

public static String getName() { 

    //Prompt User for Name and Store it as the tmp String 
    System.out.print("Please enter the target string here: "); 
    String tmp = in.nextLine(); 

    //Check to see if the string is blank, contains more than one word, or contains numbers. If so, give error and re-prompt 
    if(tmp.equals("") || tmp.contains(" ") || tmp.contains("1") || tmp.contains("2") || tmp.contains("3") || tmp.contains("4") 
    || tmp.contains("5") || tmp.contains("6") || tmp.contains("7") || tmp.contains("8") || tmp.contains("9") || tmp.contains("0")) { 
     System.out.println("\nYou entered an invalid response, please try again\n"); 
     getName(); 
    } 

    //Return the String 
    return tmp; 
} 

答えて

4

あなたは文字列を割り当てる必要があります。

tmp = getName(); 
+1

これを。パターンマッチングの正規表現を調べることも@oznomalに提案します。 – Kon

関連する問題