cont = "y";
while (cont == "y")
{
System.out.println("Enter money.");
money = input.nextInt();
TestMachine.insertMoney(money);
System.out.println("Enter more money? ('y' for yes, anything else for no.)");
cont = input.nextLine();
}
System.out.println("Enter how many tickets do you want.");
当我输入我的代码时,就会发生这种情况。
Enter money.
34
Enter more money? ('y' for yes, anything else for no.)
Enter how many tickets do you want.
代码将在收到用户收到的输入之前打破while循环,即使变量'cont'看起来仍然是“y”。有人可以帮我解释为什么会这样吗?感谢。
我被告知在我的代码中使用.equals()而不是==。它现在看起来像这样。
cont = "y";
while ("y".equals(cont))
{
System.out.println("Enter money.");
money = input.nextInt();
TestMachine.insertMoney(money);
System.out.println("Enter more money? ('y' for yes, anything else for no.)");
cont = input.nextLine();
}
System.out.println("Enter how many tickets you want.");
然而,当我运行代码时,会出现同样的问题。它在等待用户输入之前打破了循环。
Enter money.
34
Enter more money? ('y' for yes, anything else for no.)
Enter how many tickets do you want.
答案 0 :(得分:2)
使用while ("y".equals(cont))
代替while (cont == "y")
要比较java中的String对象,请使用.equals()方法而不是“==”运算符
如果你想忽略下面的案例使用
while ("y".equalsIgnoreCase(cont))
答案 1 :(得分:0)
正如邹邹在评论==
中所说,比较了两个对象在内存中指向的位置。 equals()
比较了两个对象的值,因此您想要while(cont.equals('y')
当您检查两个变量是否指向计算机内存中的同一对象时,实际上只应使用==
运算符。在大多数情况下,最好使用equals()