2016-04-22 7 views
0

ロック、ペーパー、はさみをシミュレートするプログラムを作成しています。ユーザーに "ロック"、 "ペーパー"、または "ハサミ"のいずれかを入力する必要があります。私のコードは有効な文字列入力のためにユーザーに再認証する方法はありますか?

Scanner input = new Scanner(System.in); 
    String userIn = null; 

    while ((userIn != "Rock") || (userIn != "Paper") || (userIn != "Scissors")) { 
     System.out.println("Please Type either: Rock, Paper or Scissors"); 
     userIn = input.next(); 
    } 

私は最初の入力をnullに設定しました。プログラムが実行されると、入力が "Rock"、 "Paper"、または "Scissors"ではないので、ユーザーはこれら3つのうちの1つを入力するよう促します。 "Rock"、 "Paper" 、または "はさみ"が正しく表示されても、「ロック、ペーパー、はさみ」と入力してください。

何が間違っていますか?

答えて

0

文字列の比較には、!=の比較ではなく、 userIn.equals("yourString")の関数を使用してください。

0

入力文字列の大文字小文字を区別しない場合は、.equals()以降の文字列を使用してください。.equalsIgnoreCase()それが助けになるかもしれない。 、まず

Scanner input = new Scanner(System.in); 
    String userIn = ""; 

    while (!(userIn.equals("Rock") || userIn.equals("Paper")|| userIn.equals("Scissors"))) { 
     System.out.println("Please Type either: Rock, Paper or Scissors"); 
     userIn = input.next(); 
    } 

、このようなプログラムを更新し

0

equal or equalsIgnoreCaseは、比較するために、オブジェクトの内容を使用しますが、!=reference address との比較を行うので、コードが

while ((userIn.equalsIgnoreCase("Rocker")) || (userIn.equalsIgnoreCase("Paper") || (userIn.equalsIgnoreCase("Scissors")) 
0

する必要がありますあなたがしている場合

String userIn = null; //instead String userIn = " "; 

私たちはチェックできません

userIn.equals("Rock"); // i.e. null.equals("Rock"); 

コンパイラはNULLポインタの例外を介しています。したがって、上記のようにプログラムを編集し、適切に動作します。

関連する問題