我正在尝试创建一种方法来验证用户输入为“ 1”。因此,我使用了while循环进行验证。但是,当输入为“ 1”时,它将进入while循环。
public static int switchInput() {
System.out.print("\n" + "Enter your selection: ");
Scanner userInput = new Scanner(System.in);
String selection = userInput.next();
while (selection != "1" /*&& selection != "2" && selection != "3"*/){
System.out.println("Enter 1: ");
//System.out.println("Please enter either '1','2' or '3': ");
selection = userInput.next();
}
int result = Integer.parseInt(selection);
return result;
}
输出:
What would you like?
1: Regular Hamburger
2: Healthy Burger
3: Deluxe Burger
Enter your selection:
1
Enter 1:
1
Enter 1:
1
Enter 1:
Process finished with exit code -1
答案 0 :(得分:1)
selection != "1"
是错误的。 !=
检查参考不等式,即,如果两边的对象都不相同,则条件将返回true
。
在您的情况下,selection
和值为1
的String对象是不同的对象,这就是为什么条件返回true的原因。
使用!selection.equals("1")
编辑:
根据Igor Nikolaev的建议,如果不强制使用String
对象作为选择,则可以使用int selection = userInput.nextInt()
将选择作为int
。在这种情况下,您可以使用selection == 1
。
答案 1 :(得分:0)
您看到,变量'selection'
是一个字符串,并且使用!=
比较两个字符串是不正确的。
而是使用方法equals()
因此,我看到您想比较字符串选择和字符串“ 1”是否将if条件替换为:
while(!selection.equals("1")){
提示:您希望用户输入数字,那么为什么要选择字符串?如果它是整数,那会更好。