如何重新提示用户输入有效的字符串?

时间:2016-04-22 03:13:52

标签: java string input prompt

我正在创建一个模拟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"。

我做错了什么?

4 个答案:

答案 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");

编译器将通过空指针异常。因此,如上所述编辑您的程序并正常工作。