Как проверить, не равны ли оба в операторе if? - PullRequest
0 голосов
/ 04 декабря 2018

У меня так много в моем коде:

if ( x1 == x2 && y1 == y2) {
    // do nothing
}
else {
    // do the thing
}

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

if ( x1 != x2 && y1 != y2) {
    // do the thing
}

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

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Если ваш код заканчивается в операторе if или else, вы можете сделать

if (x1 == x2 && y1 == y2) {
        // do something 
        return;    // this will end the execution here. 
}
// the else block would be in the rest of execution. 

Этот метод полезен, когда вы пытаетесь зафиксировать определенный ввод от пользователя или делаете утверждение,Таким образом, я получил правильный ввод, продолжайте выполнение иначе aport .. вместо проверки неопределенных возможностей.

0 голосов
/ 04 декабря 2018

Используйте один из законов Де Моргана (a) :

not (A and B) = (not A) or (not B)

Другими словами:

if (x1 != x2 || y1 != y2) {
    // do the thing
}

Если вы не хотите думать слишкомЧто касается логики высказываний, вы можете просто использовать следующий английский вариант.

  1. Вы хотите , а не делать "вещь" только , если оба утверждения верны.
  2. Следовательно, если одно или оба утверждения ложны, вы должны сделать «вещь».

(a) Другой:

not (A or B) = (not A) and (not B)
...