Как я могу написать оператор if с несколькими условиями?

Я пытаюсь написать оператор if, где, если a истинно и если (b или c) истинно, то сделайте что-нибудь.

Я написал это, но я не уверен, что логика верна.

if (critStatus == false && badStatus == true || pmBadStatus == true) {
//do something
}

По сути, если critStatus равен false &&, если badstatus или pmbadstatus равен true, тогда он должен что-то делать.


person Mike.Chun    schedule 29.11.2016    source источник
comment
Похоже, вы имеете в виду if (!critStatus && (badStatus || pmBadStatus)).   -  person khelwood    schedule 30.11.2016
comment
Мне нравится, как ОП буквально напечатал ответ на свой вопрос, задавая его. :П   -  person DejaVuSansMono    schedule 30.11.2016
comment
Кстати, f==true следует писать просто f, а f==false нужно просто писать !f.   -  person khelwood    schedule 30.11.2016
comment
Спасибо всем, я не был уверен, и я знал, что чего-то не хватает. Но это не стоило получать -3 за =/.   -  person Mike.Chun    schedule 30.11.2016


Ответы (3)


(A&&B)||C или A&&(B||C) оцениваются по-разному, порядок будет зависеть от того, где находятся скобки.

Ты имеешь в виду

if (!critStatus && (badStatus || pmBadStatus)) {
    //do something
}
person ΦXocę 웃 Пepeúpa ツ    schedule 29.11.2016

&& имеет более высокий приоритет, чем ||, поэтому вы должны написать свое условие следующим образом:

if (critStatus == false && (badStatus == true || pmBadStatus == true))

См. правила приоритета Java здесь.

person badjr    schedule 29.11.2016
comment
Не сравнивайте логические переменные с true или false. Используйте if (!critStatus && (badStatus || pmBadStatus)) - person bradimus; 30.11.2016

if (critStatus == false && (badStatus == true || pmBadStatus == true)) {
//do something
}

все, что вам нужно, это скобки. перед скобками утверждение было:

if ((a = true and b = true) OR c = true){
person Caroline Hardison    schedule 29.11.2016