使用 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)
}
我正在探索另一种编写此代码的方式,而不是 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)
}