做哨兵不工作(java)

时间:2010-11-01 09:27:36

标签: java string

我在以下代码中的哨兵将无效。进入'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

3 个答案:

答案 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")

的字符串