2010-11-01 139 views
1

我的哨兵在下面的代码将无法正常工作。它在进入'zzz'时保持循环而不是退出。有任何想法吗?请注意,我在此练习中希望使用Console类而不是Scanner类。做哨兵不工作(java)

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

或多或少相同http://stackoverflow.com/questions/767372/java-string-equals-versus – 2010-11-01 09:55:55

回答

3

使用

if (ans.equals("zzz")) 

,而不是

if (ans == "zzz") 

在Java中,两个字符串只有“平等”,如果它们是相同的对象......你必须使用equals()方法来比较实际字符串内容。

+0

谢谢你马特! – raoulbia 2010-11-01 09:45:11

+0

没有问题,祝你好运。 – 2010-11-01 20:10:10

3

修改成:

if (ans.equals("zzz")) 
    sentinel = false ; 

或更好,但到:

if ("zzz".equals(ans)) 
    sentinel = false ; 

(这最后一个版本给你买空校验)

1

不使用==来比较字符串使用ans.equals("zzz")