首先,我知道这可能已经回答了某些地方,但我似乎无法找到正确的条款来获得答案。另外,我对编码很新,而且很明显,所以这可能不是最好的书面'问题'。
快速背景故事:我正在BlueJ中编写一个排序游戏(我知道......很糟糕,但这就是我们在学校学到的东西),而且我正在创建一个方法来解决我需要的任何是/否问题。工作正常。起初,我遇到了一个问题,允许将用户输入保存为String,现在我遇到了if-else语句参数中使用的String的问题。这就是我现在所拥有的:
public void userAnswer(int method) //used for yes/no questions
{
System.out.println("Please type 'y' for yes and 'n' for no.");
String answer = keyboard.next();
answer.toLowerCase();
System.out.println(answer + "worked");
if(answer == "y")
{
System.out.println("worked2");
if(method == 0)
completeOrNot();
if(method == 1)
usersMove(theArray);
}
else if(answer == "n")
{
System.out.println("worked3");
System.out.print("\n");
}
}
我完全不知道为什么它没有进入if-else语句。我测试它是否会打印字符串,它会,但它不会将它转换为小写。我只是不知道该怎么做。任何和所有的帮助将不胜感激!
答案 0 :(得分:0)
在比较Java中的字符串时,请使用equals()方法。否则,如果使用==。
,则比较它们的内存位置 "hi".equals("hello") returns False
"hello".equals("hello") returns True
答案 1 :(得分:0)
不要使用==来比较字符串。使用equals:
answer.equals("y")
答案 2 :(得分:0)
Java中的字符串是对象 - 您需要使用equals
方法评估相等,而不是==
运算符以参考标识:
if ("y".equals(answer)) {
// code
} else if ("n".equals(answer)) {
// code
}