2016-10-02 606 views
0

這是我的程序的一部分,我想要求用戶插入「真」或假「 但我繼續得到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循環中使用return語句...當條件失敗時,循環會自動停止爲什麼你要返回值? – RohitS

+0

返回應該在你的方法 – RohitS

回答

1
  • 使用字符串API,使用equals或equalsIgnoreCase方法,這是由於==方式運營商的工作,因爲這將嚴格比較,如果兩個ob項目是相同的,而不是那些對象的價值。寫入字符串的.equals方法以執行字符串值比較。
  • 該邏輯設置爲始終返回true。使用OR運算符,字符串總是不是「真」,或者不是「假」。
  • 你也想移動return語句跳出while循環,因爲你不應該返回值,直到你完成循環:

    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;