2016-04-22 80 views
0

我正在創建一個模擬岩石,紙張,剪刀的程序,我需要用戶輸入「Rock」,「Paper」或「Scissors」。我的代碼是:如何重新提示用戶輸入有效的字符串?

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」,它會提示用戶輸入其中的一個,即使輸入「Rock」,「Paper」 ,或「剪刀」正確,它仍然重新提示我「請輸入:岩石,紙張或剪刀」。

我做錯了什麼?

回答

0

對於字符串比較使用 userIn.equals("yourString")函數而不是!=比較。

0

如果您不打擾輸入字符串的情況,您應該嘗試使用.equals()或更好.equalsIgnoreCase()。這可能有幫助。

0

equal or equalsIgnoreCase使用對象的內容進行比較,但!=reference address 比較這樣的代碼應該是

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

更新你的程序是這樣,

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(); 
    } 

首先,如果你在做

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

我們不能檢查

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

編譯器會通過一個空指針異常。所以,像上面那樣編輯你的程序,並且能夠正常工作。

相關問題