-1
這4個if語句在此KeyListener中檢查輸入了哪個箭頭鍵。我想通過將4個if語句組合成更簡潔的switch語句或條件語句來提高效率。將if語句合併到1 switch語句中
如何將4條if語句合併爲1條件語句或switch語句?
class MyKeyListener implements KeyListener {
public void keyReleased(KeyEvent e) { }
public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
for (int i=0; i < a.length;i++){
for (int k=0; k < a[i].length;k++){
Contents tileLeft = lr.getTile(levelData, i-1, k);
Contents tileUp = lr.getTile(levelDate, i, k+1);
Contents tileRight = lr.getTile(levelDate, i+1, k);
Contents tileDown = lr.getTile(levelData, i, k-1);
if(keyCode == KeyEvent.VK_LEFT) {
if (tileLeft == Contents.EMPTY || tileLeft == Contents.GOAL) {
levelData[i][k] = Contents.EMPTY;
levelData[i-1][k] = Contents.PLAYER;
}
}
if(keyCode == KeyEvent.VK_UP) {
if (tileUp == Contents.EMPTY || tileUp == Contents.GOAL) {
levelData[i][k] = Contents.EMPTY;
levelData[i][k+1] = Contents.PLAYER;
}
}
if(keyCode == KeyEvent.VK_RIGHT) {
if (tileRight == Contents.EMPTY || tileRight == Contents.GOAL) {
levelData[i][k] = Contents.EMPTY;
levelData[i+1][k] = Contents.PLAYER;
}
}
if(keyCode == KeyEvent.VK_DOWN) {
if (tileDown == Contents.EMPTY || tileDown == Contents.GOAL) {
levelData[i][k] = Contents.EMPTY;
levelData[i][k-1] = Contents.PLAYER;
}
}
}
}
}
}
使用'switch ... case'。 – AntonH
考慮使用方向和鍵綁定的枚舉,而不是根據[本示例](http://stackoverflow.com/a/21817447/522444)(請運行以查看)的KeyListener。另請參閱[此類似示例](http://stackoverflow.com/a/12545773/522444)。 –