Почему Netbeans предлагает мне “Перевернуть операнды двоичных операторов” в моем Java-коде

#java

#java

Вопрос:

 @Override
public void keyPressed(KeyEvent e) {

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

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

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

Комментарии:

1. Редактирование изменено amp;amp;amp;amp;amp;amp;amp;amp;amp;amp; на amp;amp; . Это правильно?

Ответ №1:

Вероятно, это потому, что ваша логика здесь не оптимальна. Я думаю, это было бы лучше:

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

кроме того, если это в конечном итоге станет большим блоком if-else if, я бы использовал вместо этого оператор switch .

редактировать: просто чтобы добавить еще немного контекста. Если вы собираетесь фильтровать как по нажатию клавиши, так И по нажатию других клавиш, таких как shift, ctrl и т. Д., При нажатии клавиши, Вы хотите разделить if или cases на основе типа. т. Е. Вы хотите, Чтобы каждый блок сначала фильтровался по нажатию клавиши, а затем внутри блока были блокидля проверки нажатий shift и ctrl. Это вместо одного огромного блока else-if, который охватывает все случаи, такие как enter press, enter press shift, enter press ctrl.

psuedocode:

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

Комментарии:

1. Это код из моего проекта колледжа в chat Messenger с использованием Java