使用if,else if,else在java中重写switch语句

时间:2015-11-21 06:52:25

标签: java eclipse switch-statement

我正在探索另一种写这种方式而不是switch case语句。这基本上控制使用左右键将对象从左向右移动,反之亦然。我尝试用if编写它,否则if语句但语法错误很少。

public void keyPressed(KeyEvent k) 
{ 
    int key = k.getKeyCode();           
            switch (key) 
            { 
                case KeyEvent.VK_LEFT:
                    if (basket.getX() > 0) 
                    { 
                        basket.move(-BM, 0); 
                    } 
                    break; 

                case KeyEvent.VK_RIGHT: 
                    if (basket.getX() + BW <  AW) 
                    { 
                        basket.move(BM, 0); 
                    } 
                    break; 
            }  
}

2 个答案:

答案 0 :(得分:1)

替代方式:

public void keyPressed(KeyEvent k) {    
    if(k.getKeyCode() == KeyEvent.VK_LEFT) {
      if (basket.getX() > 0)  { 
        basket.move(-BM, 0); 
      } 
    }

    if(k.getKeyCode() == KeyEvent.VK_RIGHT) {
      if (basket.getX() + BW <  AW) { 
        basket.move(BM, 0); 
      } 
    }  
}

答案 1 :(得分:1)

总有一种方法可以最大限度地减少,但是你会失去代码的可读性。

为了便于阅读,我个人更喜欢使用switch语句或if-else

解决方案

boolean keyLeftTrue = false;
if ((keyLeftTrue=(k.getKeyCode() == KeyEvent.VK_LEFT)) && basket.getX() > 0)
        || (k.getKeyCode() == KeyEvent.VK_RIGHT && (basket.getX() + BW <  AW))){
    basket.move((keyLeftTrue?-BM:BM), 0)
}