我正在创建一个模拟Rock,Paper,Scissors的程序,我需要用户输入" Rock"," Paper"或" Scissors&#34 ;。我的代码是:
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"或"剪刀"正确地说,它仍然会让我重新投入"请输入:Rock,Paper或Scissors"。
我做错了什么?
答案 0 :(得分:0)
用于字符串比较
UI Element
功能而不是userIn.equals("yourString")
比较。
答案 1 :(得分:0)
如果您对输入字符串的情况不感兴趣,则应尝试使用.equals()
或更好.equalsIgnoreCase()
。这可能有所帮助。
答案 2 :(得分:0)
equal or equalsIgnoreCase
使用对象的内容进行比较,但!=
与reference address
进行比较
所以代码应该是
while ((userIn.equalsIgnoreCase("Rocker")) || (userIn.equalsIgnoreCase("Paper") || (userIn.equalsIgnoreCase("Scissors"))
答案 3 :(得分: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");
编译器将通过空指针异常。因此,如上所述编辑您的程序并正常工作。