2010-11-01 91 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")