Это утверждение:
while(!side.equalsIgnoreCase("O") || !side.equalsIgnoreCase("E"));
всегда верно
Если вы введете E
или e
, это !side.equalsIgnoreCase("E")
ложно, но это !side.equalsIgnoreCase("O")
верно
Если вы введете O
или o
, это !side.equalsIgnoreCase("O")
будет ложным, но это !side.equalsIgnoreCase("E")
верно
Поскольку вы используете ||
, true || false
дает вам true
таким образом, цикл никогда не заканчивается
Для каждого другого входа оба имеют значение true (true || true
), что также верно
Вам необходимо заменить его на:
while(!side.equalsIgnoreCase("O") && !side.equalsIgnoreCase("E"));