Если заявление с String.equals () - PullRequest
1 голос
/ 11 января 2012
if ((clearance.equals("")) || (!clearance.equals("0")) || (!clearance.equals("1"))){
  System.out.println("Invalid entry, exiting.\n");
  System.exit(0);
}

Однако, когда я набираю 0 или 1, он все равно печатает «Неверная запись, выход.»

Есть идеи, что пошло не так?

Ответы [ 4 ]

12 голосов
/ 11 января 2012

Условие должно выглядеть следующим образом:

if (!clearance.equals("0") && !clearance.equals("1")) {

Ваше текущее выражение всегда оценивается как true (так как любая строка не равна ни "0", ни "1").

1 голос
/ 11 января 2012

Ваша логика неверна.

if ((clearance.equals("")) || ((!clearance.equals("0")) && (!clearance.equals("1")))){

0 голосов
/ 11 января 2012

если зазор равен «1», то это не «0», так что вы бы там замкнули, и значение истинно. если клиренс равен 0, то это не 1, поэтому опять ваше утверждение верно.

0 голосов
/ 11 января 2012

Подумайте об этом: вы напечатаете сообщение об ошибке, если clearance != "0" ИЛИ, если clearance != "1". Один или другой из них всегда будет правдой.

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