以下代码块存在轻微问题:
newusr = c.readLine("New user? ");
if (newusr == "y") {
System.out.println("IF");
usnm = createNewUser();
usnm = loginToClient();
}
else {
System.out.println("ELSE");
usnm = loginToClient();
}
基本上,当我在提示符中输入单个字符“y”时,它会将我带到else情况,因此直接指向loginToClient方法。这是怎么回事;是不同编码中的“y”还是什么?
c是一个控制台。
答案 0 :(得分:1)
比较java中使用等号的字符串,如下所示:
...
if (newusr.equals("y"))
...
答案 1 :(得分:0)
为什么不进行if(("y").equals(newusr))
检查?
如果您不输入值,这也将避免NullPointerException
。
答案 2 :(得分:0)
代码newusr == "y"
会将newusr
变量的内存位置与"y"
进行比较。哪个会失败。
您应该使用.equals()
方法比较对象。