Состояние вашего else if
всегда оценивается как true
.
suit1 != 'c' || suit1 != 'd' || suit1 != 'h' || suit1 != 's'
Решение
Правильное состояние в вашем else if
будет примерно таким:
!(suit1 == 'c' || suit1 == 'd' || suit1 == 'h' || suit1 == 's') // Using OR
suit1 != 'c' && suit1 != 'd' && suit1 != 'h' && suit1 != 's' // Using AND
Разбиваем его на части
Давайте разберем ваше выражение на единичные условия:
suit1 != 'c' // Suit1 is not 'c'
suit1 != 'd' // Suit1 is not 'd'
suit1 != 'h' // Suit1 is not 'h'
suit1 != 's' // Suit1 is not 's'
Как вы видите, ваш код сначала проверяет, является ли suit1
не 'c'
,Есть две возможности:
Suit1
не равно 'c'
=> выражение возвращает true
Suit1
равно 'c'
=> программа продолжается и проверяетесли Suit1
равно 'd'
.Программа достигает этой точки, только если Suit1
равно 'c'
.Поскольку 'c' != 'd'
условие true
, и ваша программа всегда будет выполнять код в блоке else if
.
Переписав условие
Вы можете изменить выражение на and &&
вместо or ||
и инвертировать все.
!(suit1 == 'c' && suit1 == 'd' && suit1 == 'h' && suit1 == 's')
Используя этот синтаксис, вы можетеясно видите, что suit1
просто не может иметь все эти значения одновременно.