User, Loser, Coder and Proger

  • 8
  • Недоступна
1. Ввести [в цикле] с клавиатуры несколько строк (ключей). Строки(ключи) могут быть такими: "user", "loser", "coder", "proger". Ввод окончен, когда строка не совпадает ни с одной из выше указанных. 2. Для каждой введенной строки нужно: 2.1. Создать соответствующий объект [см. Person.java], например
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (137)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Димка Данько17 уровень, Минск
8 июля, 14:12
Задача жжот... если не не использовать instanceof а реализовать через switchcase с определением от какого класса создан объект - Вас отфутболит... но зато анализатор кода будет доволен. Вот так
Oleg15 уровень, Киев
6 июля, 15:35
Проверка и создание объекта: if(key.equals("user")){ Person.User user = new Person.User(); doWork(user); } Вызов метода при совпадении класса: if (person instanceof Person.User){ ((Person.User) person).live(); }
Yerzhan19 уровень
13 мая, 05:39
аж 8 попыток и наконец валидатор улыбнулся мне и принял. Idea помогла с методами.
Дмитрий Метельский23 уровень, Минск
11 мая, 19:42
Вот это хитро if (person instanceof Person.User) ((Person.User) person).live();-спасибо идее
Алексей18 уровень, Москва
10 апреля, 15:01
Ы, впервые применил switch()
Danil Guschin16 уровень
11 июля, 19:01
лайк, аналогично))
Max Rabinovich19 уровень, Санкт-Петербург
4 апреля, 11:24
А можно как-нибудь передавать отформатированную строку в создание нового объекта? Типа:
key = word.substring(0, 1).toUpperCase() + word.substring(1);
person = new Person.key()
Dzmitry Huletski31 уровень, Минск
22 марта, 07:59
Решение прошло валидацию, но ей-богу, не пойму, зачем нужно такое сложное обращение к классу User? if (person instanceof Person.User) ((Person.User) person).live(); Почему компилятор не видит этого публичного класса просто так? if (person instanceof User) person.live();
Shellby16 уровень, Харьков
29 марта, 15:03
Тот же вопрос, но идея (спасибо) сама всё подставила и всё правильно решилось. Надеюсь в будущем станет понятно почему так. Нашел ниже в комментариях: Person находится выше по иерархии наследования, чем User, так что не знает о методе live, определенном в User. (Peron.User) - приведение типов Классы являются вложенными в интерфейс, значит обращение к методу класса возможен через приведение к типу (Родитель.Класс).
DenisKa19 уровень, Екатеринбург
18 марта, 17:25
а ну ка признавайтесь, хоть кто-то вспомнил что надо сделать в конце reader.close(); ?
Денис18 уровень, Екатеринбург
21 апреля, 11:01
Я помнил когда условие читал, пока всю эту простыню кода написал уже забыл :)
Haumi17 уровень, Санкт-Петербург
13 мая, 12:51
четкий вопрос XD
Андрей18 уровень, Новосибирск
14 марта, 06:22
Рефакторинг: замена условного оператора полиморфизмом Зачем нас приучают писать плохой код?
Андрей18 уровень, Новосибирск
14 марта, 06:18
Коллеги! А насколько в java принято/оправдано использование меток для break'ов?
loop:
while (reader.ready()) {
    key = reader.readLine();
    switch (key) {
        case ...
        default:
            break loop;
    }
}