关于开关的问题

时间:2011-06-15 09:45:22

标签: java

我是一名java初学者,所以这段代码出了什么问题:

switch(keycode) {
    case Keyboard.KEY_UP || Keyboard.KEY_DOWN: 
}

我向我提供了以下错误消息:

bad operand types for binary operator '||'
  first type:  int
  second type: int

8 个答案:

答案 0 :(得分:5)

switch(keycode) 
{    

    case Keyboard.KEY_UP:
    case Keyboard.KEY_DOWN: 
        //  code to run...
        break;

}

请参阅The switch Statement

答案 1 :(得分:4)

您正在将逻辑或运算符||应用于不允许的整数。您可以将逻辑运算符仅应用于布尔操作数。

由于您希望在keycodeKeyboard.KEY_UPKeyboard.KEY_DOWN时执行相同的案例块,请使用详细信息块:

switch(keycode) {

    case Keyboard.KEY_UP:     /* fall through */
    case Keyboard.KEY_DOWN:   /* Common code when keycode is either 
                                 KEY_UP or KEY_DOWN */
                              break;
}

答案 2 :(得分:3)

你明白||意思是“或”但你没有完全理解。 ||是两个布尔变量

之间的比较器

有些东西是真的||假。它不能是粉笔||干酪。

switch语句是一个整数比较器。你可以改变

int number =3
switch(number)
    case 1: one(); break;
    case 2: two(); break;
    case 3: three(); break;

if(number == 1) one();
else if(number ==2) two();
else if(number == 3) three();

看起来你想要做的是

if(number == 1 || number == 2)您会注意到number == 1为真或假,number == 2为真或假。

如果在已接受的答案中,您可以在使用break;

打破结构之前执行多个案例,那么

switch语句非常有用

答案 3 :(得分:2)

更改为

switch (keycode) {
case Keyboard.KEY_UP:
case Keyboard.KEY_DOWN:
    // Do something, then
    break;    
}

答案 4 :(得分:1)

switch(keycode) {
case Keyboard.KEY_UP:
case Keyboard.KEY_DOWN:
// code here
break;
...
}

答案 5 :(得分:1)

你不能用switch做到这一点(至少不是用Java)。你必须要做

switch(keycode) {
 case Keyboard.KEY_UP:
 case Keyboard.KEY_DOWN:
   doKeyStuff();
   break;

答案 6 :(得分:1)

如果您希望两个值具有相同的行为,请不要使用||操作员,只有第一个案例落到第二个案例:

switch(keycode) {
  case Keyboard.KEY_UP:
  case Keyboard.KEY_DOWN:
    break;

答案 7 :(得分:1)

您不能对数字使用逻辑运算。

你可以写这个

switch(keycode) {
    case Keyboard.KEY_UP | Keyboard.KEY_DOWN: 
}

然而,由于键码必须是这些值的组合,因此这不会达到预期效果。您的意图可能是

switch(keycode) {
    case Keyboard.KEY_UP: case Keyboard.KEY_DOWN: 
}

这将匹配任一值。