2011-06-15 120 views
2

我是一個Java初學者,所以什麼是錯,此代碼:關於產品:開關

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

我給了我以下錯誤信息:

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

回答

4

您正在將邏輯運算符或運算符||應用於不允許的整數。您可以將邏輯運算符僅應用於布爾操作數。

既然你要當keycode或者是Keyboard.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; 
} 
5
switch(keycode) 
{  

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

} 

The switch Statement

+1

執行幾種情況:) – cyrianox 2011-06-15 09:51:49

+2

這是當你繼續做錯了只有愚蠢。 ;) – 2011-06-15 09:52:25

+2

@cyrianox:不要因爲誤解某些語法而自稱愚蠢。即使專業人士偶爾也會這樣做,並且學習編程需要很長時間。 – 2011-06-15 10:15:08

2

更改爲

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

你可以用」用交換機做這件事(至少不用Java)。你必須做

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

如果你想要兩個值相同的行爲,請不要使用||運算符,只是將第一個案例落入第二個案例:

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

您無法對數字使用邏輯操作。

你可以這樣寫

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

但是這不會做你所期望的東西作爲密鑰號碼必須是這些值的組合。你想要的可能是

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

這將匹配任一值。

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是真或假。哦,我太愚蠢

switch語句時很有用,如接受的回答,您可以前爆發的結構與break;

+0

+1用於解釋_why_ Java在此上下文中不允許使用「||」。 – 2011-06-15 10:02:23