开发者

Question about switch

I'm a java beginner, so what's wrong with this code:

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

I gives me the following error message:

开发者_开发百科
bad operand types for binary operator '||'
  first type:  int
  second type: int


switch(keycode) 
{    

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

}

See The switch Statement


You are applying the logical or operator || to integers which is not allowed. You can apply the logical operators to only boolean operands.

Since you want to execute the same case block when keycode is either Keyboard.KEY_UP or Keyboard.KEY_DOWN use a fall through case block as:

switch(keycode) {

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


You understand that || means "or" but you don't have a full understanding. || is a comparator between two boolean variables only

Something is either true || false. It cannot be chalk || cheese.

The switch statement is a integer comparator. You could change

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

to

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

It looks like what you are trying to do is

if(number == 1 || number == 2) where you will notice number == 1 is either true or false and number == 2 is either true or false.

switch statements are useful when, as in accepted answer, you can perform several cases before breaking out of the structure with a break;


Change to

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


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


You can't do that with switch (at least not in Java). You'll have to do

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


If you want the same behavior for both values, don't use || operator, just have the first case fall through to the second:

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


You cannot use a logical operation on a number.

You can write this

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

However this will not do what you might expect as keycode would have to be the combination of these values. What you intended is likely to be

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

This will match either values.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜