Номер месяца

  • 5
  • Недоступна
Временные промежутки «год» и «месяц», принятые на Терре, используются и на других планетах и объектах Федерации, в том числе — на корабле JRush. Однако зачастую стажёры экипажа внеземного происхождения путаются, когда речь заходит о земных месяцах. Поможем им: напишем программу с коллекциями, которая по имени месяца выведет его номер на экран.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (95)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Adlan10 уровень
позавчера, 07:37
Решил через Аррай лист . Один вопрос только, есть ли способ решить без добавления пустой строки в лист? Лисст начинаеться с нуля а нужно чтоб с одного.
Demid9 уровень
среда, 07:51
Один совет - объявляйте коллекцию в методе main, не пытайтесь сделать ее полем класса как я )) иначе валидатор будет считать что ее нет )))
Efich9 уровень, Санкт-Петербург
10 апреля, 20:37
Валидатор: Внимательно проверь выводимый текст, похоже ты допустил опечатку. Миллион раз проверил, столько же раз переписал, в чем проблема? May is the 5 month
Сева11 уровень, Москва
16 апреля, 11:22
Ну может опечатка в другом месяце или номере другого месяца?
Шкипер14 уровень, Минск
26 марта, 12:38
задача не соответствует статусу "Задача со звездочко" , изи.
Sipa Barskij26 уровень
21 марта, 09:58
зачем усложнять, когда можно просто : int x = list.indexOf(reader.readLine())+1; System.out.println( reader.readLine() + " is the "+x+" month");
Денис14 уровень, Екатеринбург
3 марта, 15:38
Добавлять месяцы в ArrayList можно еще так:
months.addAll(Arrays.asList("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"));
а проверять на наличие:
String text = reader.readLine();
        if (months.indexOf(text) != -1) {System.out.println(text + " is the " + (months.indexOf(text) + 1) + " month"); }
Георгий18 уровень, Львов
17 марта, 11:28
Денис, красивая у вас проверка на наличие, цикла не надо. Но можно ли сюда вставить как то IgnoreCase?
Rina14 уровень
18 марта, 07:29
Да, код доставляет эстетическое удовольствие )))
Денис14 уровень, Екатеринбург
18 марта, 16:38
Георгий, проще преобразовать входной String под нужный вам формат, например так:
String text0 = reader.readLine();
String text = text0.substring(0, 1).toUpperCase() + text0.substring(1).toLowerCase();
вместо: String text = reader.readLine();
Sergey Bezverkhniy11 уровень
27 февраля, 18:50
Вариант через ArrayList 1. Создаем ArrayList 2. Заполняем 13 элеменатами (первый пустой) 3. Читаем с клавиатуры месяц 4. Сравниваем с элементами через equals 5. Eсли совпадают то System.out.print(ListMonth.get(i) + " is the " + ListMonth.indexOf(ListMonth.get(i)) + " month"); Все проходит!!!
Dmitriy11 уровень, Москва
26 февраля, 20:10
На мой взгляд самый простой способ - это создать мапу <String, Integer> где ключ - это название месяца, а значение - номер месяца затем просто выводим на экран:
String userInput = reader.readLine();
System.out.println(userInput + " is the " + map.get(userInput) + " month");
Шкипер14 уровень, Минск
26 марта, 12:39
тоже так делал.
Bo_Jackson14 уровень, Санкт-Петербург
20 февраля, 22:00
я думал и решал через Date, не получалось, зашел в комментарии и оказалось что нужно через Map, и задача и сложной превратилась в легкую.
zyto16 уровень, Москва
26 февраля, 13:58
Сделал через ArrayList, нормально прошёл валидацию с первого раза...
Dr Evil17 уровень, Киев
19 февраля, 16:32
If you used Map, the Java 8 iteration through the list is pretty easy:
map.forEach((key, value) -> {
     if(key.equalsIgnoreCase(userInput)) {
           System.out.println(String.format("%s is the %d month", key, value));
     }
});
Otherwise, if you used List, then you can use a standard foreach statement:
for (String s : list) {
       if (userInput.equals(s.toLowerCase())) {
            System.out.println(String.format("%s is the %d month", s, list.indexOf(s) + 1));
       }
}
The only thing I can't figure out is how to test user entry for errors in the text..."else" with a break doesn't work.