2016-10-02 48 views
0

これはユーザーに「true」またはfalse「 を挿入するように依頼する私のプログラムの一部ですが、私はjava unexpected return valueを取得し続けます。これを解決する方法を見つけることができません。 returnに私のmain方法java予期しない戻り値

private String Reply() { 
    Scanner input_reader = new Scanner(System.in); 
    System.out.print("true or false"); 
    String keyboard = null; 
    keyboard = input_reader.nextLine(); 

    while (keyboard != "True" | keyboard != "False") { //if the user dosent type true or false it will continue to ask for it 
     System.out.print("Please answer with T or F "); 
     Scanner newInput = new Scanner(System.in); 
     String a = newInput.nextLine(); 
     keyboard = a; 
     return keyboard; 

    } 
} 

に値が病気にすべての助けに感謝!ありがとう!

+0

あなたは==またはでオブジェクトを比較します! =この場合。代わりに#equalsを使用してください。 –

+0

equal()関数で最初に比較する文字列while whileループでreturn文を使用しています...条件が失敗するとループは自動的に停止します。 – RohitS

+0

返信は、あなたのメソッドの最後のステートメントであるべきです – RohitS

答えて

1
  • これは==方法が原因である。等号またはequalsIgnoreCaseメソッドを使用して、文字列のAPIを使用します演算子は、厳密には2つのobこれらのオブジェクトの値ではなく、オブジェクトは同じです。文字列の.equalsメソッドは、文字列値の比較を実行するために書き込まれます。
  • ロジックは常にtrueを返すように設定されていました。 OR演算子では、文字列は常にTrueまたはFalseではありません。
  • あなたがループして行われるまで、あなたが値を返すべきではありませんので、あなたはまた、whileループの外にreturn文を移動することになるでしょう:

    while (!(keyboard.trim().equalsIgnoreCase("True") || keyboard.trim().equalsIgnoreCase("False"))) { //if the user dosent type true or false it will continue to ask for it 
        System.out.print("Please answer with True or False "); 
        Scanner newInput = new Scanner(System.in); 
        String a = newInput.nextLine(); 
        keyboard = a;   
    } 
    return keyboard; 
    
関連する問題