使用 if、else if、else 重写 java 中的 switch 语句

Rewrite switch statements in java using if, else if, else

我正在探索另一种编写此代码的方式,而不是 switch case 语句。这基本上控制使用左右键从左向右移动对象,反之亦然。我正在尝试将它写在 if,else 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; 
            }  
}

替代方式:

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); 
      } 
    }  
}

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

为了可读性,我个人更喜欢使用 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)
}