2010-11-01 5 views
1

My sentinel в нижнем коде не работает. При вводе «zzz» он продолжает цикл, а не выход. Есть идеи? Обратите внимание, что в этом упражнении я предпочитаю использовать класс консоли, а не класс Scanner.do while sentinel не работает (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 –

ответ

3

Использование

if (ans.equals("zzz")) 

вместо

if (ans == "zzz") 

В Java, две строки только «равны», если они и тот же объект ... Вы должны использовать Equals() метод, чтобы сравнить фактические содержимое строки.

+0

спасибо Мэтт! – raoulbia

+0

Нет проблем, удачи. –

3

Изменить что:

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

Или еще лучше, чтобы:

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

(Эта последняя версия покупает вам пустой чек)

1

не используют == для сравнение струн ans.equals("zzz")