2014-12-26 3 views
-2

Итак, у меня такой цикл. как вы можете предположить, что цикл должен выполняться, если d1 (пользовательский ввод) не является «g» или «u». цель состоит в том, чтобы заставить пользователя ответить на вопрос. но я не могу заставить его работать.Правильное использование логического оператора ИЛИ

Scanner user_input = new Scanner(System.in); 
d1 = user_input.next(); 
while (!"g".equals(d1) || !"u".equals(d1)) { 
    System.out.println(""); 
    System.out.println(""); 
    System.out.print(""); 
    d1 = user_input.next(); 
} 

я знаю из прошлого, что это будет работать:

while (!"g".equals(d1)) { 
    System.out.println(""); 
    System.out.println(""); 
    System.out.print(""); 
    d1 = user_input.next(); 
} 

Я думаю, что это что-то делать с этим «или логическим оператором» ||

+0

Вы только читаете ввод пользователя один раз. –

+0

Также, пожалуйста, разместите свое сообщение в форме вопроса. :) – sunnysidedown916

+2

Да, это так. Я не кодирую на Java, но вы должны использовать логический оператор 'и' вместо логического оператора 'или'. –

ответ

3

условие должно быть:

while (!"g".equals(d1) && !"u".equals(d1)) { 

вместо

while (!"g".equals(d1) || !"u".equals(d1)) { 
+1

Upvote для ответа на вопрос, пока я еще печатал. –

+1

Что я только что прокомментировал. :) –

1

Поскольку d1 не могут одновременно равны "g"и"u" то условие цикла будет всегда быть правдой. Вы, вероятно, имел в виду, чтобы свести на нет все условия, а не отдельные условия:

while (!("g".equals(d1) || "u".equals(d1))) 

или, аналогично (и, возможно, легче читать):

while (!"g".equals(d1) && !"u".equals(d1)) 
0

Вы говорите, что «если пользовательский ввод не г «ИЛИ», если пользовательский ввод не является «... не будет И лучшим оператором для того, что вы пытаетесь сделать? Как и в случае «если пользовательский ввод не является ни g, ни u»:

Используйте & &, а не || если так.

Смежные вопросы