public class Solution {
public static void main(String[] args) throws IOException {
//напишите тут ваш код
BufferedReader r1 = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> a = new ArrayList<String>();
a.add("January");
a.add("February");
a.add("March");
a.add("April");
a.add("May");
a.add("June");
a.add("July");
a.add("August");
a.add("September");
a.add("October");
a.add("November");
a.add("December");
for (int i = 0; i < a.size(); i++) {
if(a.get(i).equals(r1.readLine()))
// вот объсните пожалуйста?понимаю что при каждой итерации цикла строка которая считывается
//будет новая.но почему если указать верное название то сравнение не происходит?
//но если я выношу r1.readline в переменную и сравниваю с переменной то все прекрасно работает?
System.out.println(a.get(i)+" is the "+(i+1)+" month");}
}
}Dmitriy
23 уровень
Объясните пожалуйста почему если я передаю в equals строку ридера то сравнение не происходит?
Решен
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2322530
15 октября 2020, 13:08
потому что надо вначале считать эту строку, а потом уже в цикле проверять ее. ты же в цикле считываешь строку.
0
Dmitriy
15 октября 2020, 13:31
это я понимаю, но даже если она считывается в цикле, и я пишу правильно, например "May" то сравнение не выполняется?почему так?система просто ждем следующего ввода
0
hidden #2322530
15 октября 2020, 13:37
я тебе выше написал как правильно должно быть, так всё работает
0
Dmitriy
15 октября 2020, 13:51
да я понимаю что так как указано выше рабочий вариант, я и сам до него дошел, но я хочу понять почему поведение разное?
0
hidden #2322530
15 октября 2020, 13:54решение
я в первом сообщении написал же. потому что ты считываешь строку в цикле! сколько итераций, столько раз и будет считываться строка.
а не выполняется, потому что на первой итерации сравнивается строка с January, а ты ввел May.
+2
Dmitriy
15 октября 2020, 13:55
теперь понял, спасибо!)
0
Ivan Shcherabakov
29 октября 2020, 09:49
Спасибо за совет. Так же тупанул. Только ArrayList заполнял немножко по другому.
String[] months = new DateFormatSymbols(Locale.ENGLISH).getMonths();
for (int i = 0; i < months.length; i++) {
String month = months[i];
arraymonth.add(i, months[i]);
}
0