Несколько условий в условии if - first всегда верно - PullRequest
0 голосов
/ 03 февраля 2019

Почему первый оператор if всегда верен?

private String setDepartment (){
   int code = Integer.parseInt(JOptionPane.showInputDialog("Enter The Department Code:\n" +
            "1:Sales\n" +
            "2:Development\n" +
            "3:Accounting\n" +
           "4:None"));

    /*Why this if statement is always true? How do i solve it? */
    if (code !=1 || code !=2 || code !=3 || code !=4)
    {
        JOptionPane.showMessageDialog(null, "Invalid Number.Enter a number between 1-4");
        setDepartment();
    }

    if (code==1){
        return "Sales";
    }
    else if (code==2){
        return "Development";
    }
    else if (code==3){
        return "Accounting";
    }
    else
        return "";
    }

Ответы [ 4 ]

0 голосов
/ 03 февраля 2019

Потому что в любой момент времени значение кода будет любым из 1-4.И 3 из 4 условий всегда будут верными.Измените условие if на

If( !( code ==1 || code == 2 || code == 3 || code == 4))
0 голосов
/ 03 февраля 2019

Вам нужно использовать AND вместо OR.

Если пользователь вводит 1, то оно автоматически отличается от 2,3 и 4.

Поэтому вы можете использовать:

if (code !=1 && code !=2 && code !=3 && code !=4)

ИЛИ

if (code ==1 || code ==2 || code ==3 || code ==4)
0 голосов
/ 03 февраля 2019

Исходя из первых принципов, выбрав code = 1:

  code !=1 || code !=2 || code !=3 || code !=4
= 1    !=1 || 1    !=2 || 1    !=3 || 1    !=4
= false    || true     || true     || true
= true

Вы, вероятно, имели в виду &&, а не ||.

0 голосов
/ 03 февраля 2019

Заменить || на &&:

if (code !=1 && code !=2 && code !=3 && code !=4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...