При сравнении Strings
вы должны всегда использовать метод equals
вместо ==
, поэтому
if ("e".equals(code) || "E".equals(code))
, вероятно, то, что вы хотите.
Причина этого в том, что Strings
являются специальными объектами в Java.Они являются неизменяемыми и могут быть интернированными для оптимизации использования памяти.Константы (например, "e" и "E" в вашем коде) автоматически интернируются компилятором, но метод scanLine
, вероятно, вернет неинтернизированную строку, поэтому сравнение ==
завершится неудачей.
Помните, что когда мы говорим об объектах, ==
проверяет равенство ссылок не равенство значений , то есть a == b
означает "do a
и b
относятся ктот же объект? "a.equals(b)
может быть истинным, но a == b
ложным.