2015-01-06 2 views
1

Мне нужно, чтобы эта программа продолжала просить cardChosen1, пока пользователь не ответит что-то между 'a' и 'h'. Я знаю, что могу просто положитьКак получить определенные переменные char

while (cardChosen1 == 'a' && cardChosen1 == 'b' && cardChosen1 == 'c' &&... 

И т.д. Но я бы предпочел, чтобы он был более кратким. Я хочу, чтобы он не только блокировать письма, но также символы и цифры

Я попытался следующие:

while (cardChosen1 > 'a' && cardChosen1 < 'h') 
       { 
        System.out.println ("Hey"); 
        cardChosen1 = e.getKeyChar(); 
       } 

Но это не работает.

+0

Попробуйте использовать код ASCII для конкретного ввода, заданный пользователем, тогда сравнение> OR <имеет смысл. – Abhi

+0

Возможно, вы захотите> = и <= вместо> и <, если вы не хотите включать 'a' и 'h'. – immibis

ответ

1

Прежде всего, правильную форму, что вы ввели выше, предлагаемый ответ должен быть таким:

while (cardChosen1 == 'a' || cardChosen1 == 'b' || cardChosen1 == 'c' || ... || cardChosen1 == 'h') 

потому, что вам нужен характер, чтобы быть «» или «б» или «c» ... но то, что вы ввели, требует, чтобы персонаж был все символов от 'a' до 'h', что невозможно.

Теперь для вашего краткого пути. Вы близки к ответу, и с некоторыми незначительными изменениями он будет работать. Но более читаемо (на Java) использовать Явный тип Cast (конечно, это необязательно). Как это:

while ((int) cardChosen1 >= (int) 'a' || (int) cardChosen1 <= (int) 'h') 

заметить также о >= и <= признаки, как вы принимаете ответ, если это «а» или «з» само по себе. И, наконец, вы должны преобразовать && в ||, как я объяснил выше.

1

это условие универсально false

while (cardChosen1 == 'a' && cardChosen1 == 'b' && cardChosen1 == 'c' &&... 

это условие будет работать, но я предпочел бы создавать Set<Character> и посмотреть, если он существует в Set по

while (cardChosen1 > 'a' && cardChosen1 < 'h') 
4

Вы почти там. Проблема в том, что вы зацикливаете, пока вы do получите ответ между 'a' и 'h', и вы хотели бы петли , пока вы не получите. Просто хлопнуть на оператор отрицания (!), и вы должны быть хорошо:

while (!(cardChosen1 > 'a' && cardChosen1 < 'h')) { 

еще лучше, вы можете упростить это утверждение с некоторой булевой алгебры:

while (cardChosen1 <= 'a' || cardChosen1 > 'h')) { 
0

Вы должны проверить ASCII codes.

, например, если вы хотите, чтобы проверить a в h диапазон попробовать

(int)cardChosen1 > 97 || (int)cardChosen1 < 122 
Смежные вопросы