2013-11-08 3 views
2

Есть ли способ инвертировать переключатель, например, switch (!(x))? Я пишу программу, и я хочу, чтобы пользователь мог вводить определенные буквы. Если они вводят недопустимую букву, они должны будут ввести ее снова. Я пытаюсь использовать переключатель для этого, избегая делать что-то вроде
switch(x)
{
case a : case b: case c: case d: etc etc
}

потому что количество допустимых входных данных намного меньше, чем количество недействительных, поэтому у меня было бы 20 случаев.Можете ли вы инвертировать переключатель в java?

+7

Вы не можете использовать 'default' в своем коммутаторе здесь? – RNJ

ответ

8

Вы можете сделать

switch(x) 
{ 
case 'x' : case 'y': case 'z': //valid; 
break; 
default: //invalid; 
} 
+7

Поместите 'break;' там между случаями и значением по умолчанию. – initramfs

+0

и перерыв; по умолчанию я бы догадался – SteBra

+1

Перерыв в последнем случае избыточен – sanbhat

1

Можете ли вы использовать более IFs?

Что-то вроде:

, если (а) {} если (б) {} если (с) {} ... еще {}

1

Ну, вы можете, но это другие способы сделать это. Если бы у меня был String, который, как я знал, был одним символом, и я хотел принять какое-то действие, если этот символ НЕ был одним из определенного набора значений (скажем, "a", "b", "h", "y" или "n"), я бы написал что-то как это.

if (! "abhyn".contains(myString)) { 
    doStuff(); 
} 

Это будет казаться более понятным для большинства людей, чем возиться с круглым switch и break и default.

Обратите внимание, что если возможно, для myString здесь должно быть более одного символа, то это немного грязнее.

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