2016-04-07 10 views
0

すべてオンにしてすべての入力を検証します。私がプログラムを実行するときには、「ms」または「Ms」または「Mr」または「mr」があれば受け入れられます。しかし、私が "Mr"と入力すると、彼は私が間違って書いた最後の単語を設定し、それを-title-として設定します。その後、彼はすでに「Mr」と書かれているので、First Name入力をスキップします。プログラムは検証なしで動作します。最初の「Mr」をタイトルとして受け入れないのはなぜですか?Java入力の検証。誰もそれがうまくいかない理由を知っていますか?

System.out.println("\nTitle of the student (eg, Mr, Ms): "); 
while (!keyboard.hasNext("Mr") && !keyboard.hasNext("Ms") && !keyboard.hasNext("mr") && !keyboard.hasNext("ms")) { 
        { 
         System.out.println("Attention! Title must be Mr or Ms please choose one."); 
         list[i].setTitle(keyboard.next()); 
        } 

       } 

       System.out.println("First name (given name)"); 
       list[i].setFirstName(keyboard.next()); 

       System.out.println("A last name (family name/surname)"); 
       list[i].setFamilyName(keyboard.next()); 

答えて

1

あなたの入力をどのように取得するかは、間違いだと思います。代わりにこれを試してみて、それが動作するかどうか私に教えて:

System.out.println("\nTitle of the student (eg, Mr, Ms): "); 
String title = keyboard.next(); 

while (!title.equals("Mr") && !title.equals("Ms") && !title.equals("mr") && !title.equals("ms")) { 
{ 
    System.out.println("Attention! Title must be Mr or Ms please choose one."); 

    System.out.println("\nTitle of the student (eg, Mr, Ms): "); 
    title = keyboard.next(); 
} 

list[i].setTitle(title); 

ジャストノート - ユーザーは「私のタイトルのようなスペースで何かを入力した場合、それはバグを処理するため、おそらく)(次よりも堅牢である)nextLineを( "

+1

' nextLine'を使うと 'next'よりも良いでしょう –

+0

ほぼ確実ですが、私はAskerの元の機能性を可能な限り厳密に守ろうとしていました。 – nhouser9

+0

クール!!私はStackoverflowが大好きです。ありがとうございます@ nhouser9 – Stiller77

関連する問題