делать, пока страж не работает (Java) - PullRequest
1 голос
/ 01 ноября 2010

Мой сторож в приведенном ниже коде не будет работать. Он продолжает цикл вместо выхода при вводе 'zzz'. Есть идеи? Обратите внимание, что в этом упражнении я хочу использовать класс консоли, а не класс сканера.

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 ]

2 голосов
/ 01 ноября 2010

Используйте

if (ans.equals("zzz"))

вместо

if (ans == "zzz")

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

2 голосов
/ 01 ноября 2010

Измените это на:

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

Или еще лучше:

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

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

0 голосов
/ 01 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...