首页 > 解决方案 > 为什么 Netbeans 建议我在我的 Java 代码中“翻转二进制运算符的操作数”

问题描述

@Override
public void keyPressed(KeyEvent e) {

    if ((e.getKeyCode() == KeyEvent.VK_ENTER) && e.isShiftDown()) {
        msgSend.append("\n");

    } else if (e.getKeyCode() == KeyEvent.VK_ENTER) {
        sendMessage();
    }

    else if ((e.getKeyCode() == KeyEvent.VK_X) && e.isControlDown()) {
        System.exit(0);
    }
}

标签: java

解决方案


这可能是因为您这里的逻辑不是最佳的。我认为这会更好:

if(e.getKeyCode() == KeyEvent.VK_ENTER) {
    e.isShiftDown() ? msgSend.append("/n") : sendMessage();
} else if(...) {
    ...
}

另外,如果这最终会成为 if-else if 的一大块,我会改用 switch 语句。

编辑:只是为了添加更多上下文。如果您既要通过按键进行过滤,又要在按下某个键时按下其他键(如 shift、ctrl 等),您需要根据类型分隔 if 或 case。即,您希望每个块首先通过按键过滤,然后在块内有块来检查 shift 和 ctrl 按下。这不是一个巨大的 else-if 块,它涵盖了每种情况,例如 enter press、enter press + shift、enter press + ctrl。

伪代码:

if(enter pressed) {
     if(control is down) {}
     if(shift is down) {}
} else if(space bar pressed) {
     if(control is down) {}
     ...
}

而不是:

if(enter pressed and control down) {}
if(enter pressed and shift down) {}
if(enter pressed) {}

推荐阅读