我在以下代码中的哨兵将无效。进入'zzz'时,它会保持循环而不是退出。有任何想法吗?请注意,我希望在本练习中使用Console类而不是Scanner类。
class Username{
public static void main(String[] args){
String name, surname, code, username ;
boolean sentinel = true ;
do
{
System.out.print("enter name: ");
name = Console.readString();
System.out.print("enter surname: ");
surname = Console.readString();
System.out.print("enter code: ");
code = Console.readString();
username = surname + name.charAt(0) + code ;
System.out.print("your username: " + username);
System.out.println();
System.out.print("enter zzz to stop or hit eneter to continue: ");
String ans = Console.readString();
if (ans == "zzz")
sentinel = false ;
}
while (sentinel);
}//end main
}//end class
答案 0 :(得分:2)
将其更改为:
if (ans.equals("zzz"))
sentinel = false ;
或者更好的是:
if ("zzz".equals(ans))
sentinel = false ;
(最后一个版本为你买了一个空检查)
答案 1 :(得分:2)
使用
if (ans.equals("zzz"))
而不是
if (ans == "zzz")
在Java中,如果两个字符串是同一个对象,则它们只是“相等”...您必须使用equals()方法来比较实际的字符串内容。
答案 2 :(得分:0)
请勿使用==
来比较使用ans.equals("zzz")