public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//напишите тут ваш код
ArrayList<String> list = new ArrayList<String>();
while (true) {
String s = reader.readLine();
if (s.equals("end")) {
break;
}
else {
list.add(s);
}
}
for (int i = 0; i < list.size(); i ++) {
System.out.println(list.get(i));
}
}
}
Константин Жидков
12 уровень
Задачу решил, но долго не получалось из-за того, что проверку условия на String равняющийся "end" пытался проверить как s == "end". Когда сделал через s.equals("end") - заработало. Не до конца понимаю в чем причина. Буду благодарен пояснению
Обсуждается
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Даниил Salesforce Developer в Customertimes Master
14 октября 2019, 20:43
Тут всё очень просто. Самое главное чему нужно научится на JavaRush и к чему он заставляет - это умение найти ответ на вопрос самому. Ответ на твой вопрос очень прост даже для человека на 7-м уровне) Например "как правильно сравнивать строки в java"
0
hidden #598481
14 октября 2019, 20:42полезный
Почитай про отличия примитивов от ссылочных типов.
Если коротко, то ссылочные переменные (у которых тип с большой буквы, String например) хранят не сам объект, а только ссылку на него. Соответственно две строки - два отдельных объекта - две разные ссылки. Раз ссылки разные, значит содержимое переменных разное, значит переменные не равны. А метод equals сравнивает не содержимое переменных, а значения объектов, доступных по ссылке, лежащей в переменной. А поскольку две строки одинаковые, то equals возвращает true.
А примитивные переменные - их всего 8 (int, long, byte, short, char, float, double, boolean) хранят не ссылку, а само значение.
+4
Даниил Salesforce Developer в Customertimes Master
14 октября 2019, 20:48
Ну, есть нюанс при сравнении как примитивов, так и строк. Есть такое понятие как пул (pool). Есть разные пулы: пул строк, пул целых чисел и т.д. Из-за этой особенности при сравнении тех же строк можно получить вообще неожиданный для себя результат. Вот тут можно ознакомиться в кратце.
0
hidden #598481
14 октября 2019, 20:58
Спасибо, я в курсе.)
0
Константин Жидков
14 октября 2019, 21:07
Спасибо, действительно все просто, мог и сам догадаться.... уже столько про эти ссылочные переменные вдалбливали в голову, а я протупил
0