User, Loser, Coder and Proger

  • 16
  • Недоступна
1. Ввести [в цикле] с клавиатуры несколько строк (ключей). Строки(ключи) могут быть такими: "user", "loser", "coder", "proger". Ввод окончен, когда строка не совпадает ни с одной из выше указанных. 2. Для каждой введенной строки нужно: 2.1. Создать соответствующий объект [см. Person.java], например
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (390)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Владимир
Уровень 14, Пермь, Россия
17 октября, 12:50
Прошу объясните пожалуйста, почему надо приводить объекты к конкретному подтипу, если они изначально создавались этого подтипа, и потом ещё и истенсом проверялись, что они именно этого подтипа. Помогите понять.
Anonymous #2750026
Уровень 15, Radist
24 сентября, 06:50
По красоте надо было еще через константы сделать.
fFamous
Уровень 36, Санкт-Петербург
6 сентября, 19:22
Сделал через HashMap<String,Person>. Однако, при таком варианте создаются 4 новых объекта и они всегда существуют + получается, что это лишь ссылка на уже созданные объекты, а не создание новых 🙂
Ulysse
Уровень 28
1 сентября, 15:35
while (wordsKeyboard.contains(key)){
            Person person = switch (key){
                case "user" -> new User();
                case "loser" -> new Loser();
                case "coder" -> new Coder();
                case "proger" -> new Proger();
                default -> null;
            };
такой switch case валидатор не принимает вообще, учтите если что
Andrey Panchenko
Уровень 26, Краснодар, Россия
4 августа, 20:47
Я запарился и создал интерфейс Person и кучу классов, и долго не мог понять, почему валидатор не принимает верное решение. Только потом заметил, что Person уже был написан разработчиками 🤦‍♂️
Raviletti
Уровень 25, Винтерфелл, Вестерос
4 июля, 23:47
Пытался через свитч-кейсы, по красоте, не приняли, хоть и идее все работало:( И Кстати! в Solution можно имплементировать интерфейс Person, так интуитивно понятнее объявление объектов, улучшает читаемость и уменьшает количество кода. Получится не
Person user = new Person.User();
А так:
Person user = new User();
или
User user = new User();
Валерий Пантелеев
Уровень 15, Тюмень
21 июня, 04:05
У меня в голове не укладывается эта конструкция: "Интерфейс содержит классы, которые реализуют этот интерфейс"... Какой в этом физический смысл? Для чего здесь интерфейс?
Юрий
Уровень 18, Киев
16 июня, 20:36
Вот - это ПОВОРОТ!!! Классы можно вкладывать в Интерфейсы!!! А чего так можно было что ли?
Дмитрий Б.
Уровень 29, Благовещенск, Россия
8 июня, 15:30
Дорогой дневник. Сегодня я запланировал порешать задачки перед сном. Смотрю на эту, вроде легкая. Открываю IDEA, запилил код. Запускаю и началась какая-то шляпа: Ввожу "ключи" - в ответ нифига, ввожу левую абракатабру - нифига. Правлю код и так и сяк - нифига. Коменчу весь код и тупо в оставляю в мейне: System.out.println("Че за?"); И ни-фи-га! Что-то тут не так, подумал я. Копипастю код сюда - опля! Вы решили! Перезапускаю IDEA - робит все! Задача решена, но осадок остался. >_<
denis chernusskiy
Уровень 19, Днепр, Украина
5 июня, 21:52
Господа эксперты, кто скажет почему валидатор не пропускает такой код? (Вроде все работает как нужно)
Dim
Уровень 16, Житомир, Украина
8 июня, 10:42
потому что нужен инстансоф 🧐 и continue не нужен, если у тебя первым зашел юзер, то зачем ты его продолжаешь проверять с остальными? тебе надо сразу считывать новую строку вместо дальнейшей проверки. а так же вынести doWork из свича и убрать doWork после каждой проверки