BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Person person = null;
String key;
while (!(key = reader.readLine()).equals("exit")) {
if ("player".equals(key)) {
person = new Player();
} else if ("dancer".equals(key)) {
person = new Dancer();
}
haveFun(person);
}
}
public static void haveFun(Person person) {
//напишите тут ваш
if(person instanceof Player) {
((Player) person).play();
}
if(person instanceof Dancer) {
((Dancer) person).dance();
}
}
interface Person {
}
static class Player implements Person {
void play() {
System.out.println("playing");
}
}
static class Dancer implements Person {
void dance() {
System.out.println("dancing");
}
}
}
Задача решена верно, валидатор пропустил, но я не понимаю. То есть если строчка == этой строчке вывод "playing", но с Dancer все иначе, пишу допустим f и он выводит "dancing". Как работает код?Роман
31 уровень
Почему выполняется dancer, даже если напишешь любое слово?
Решен
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Роман Java Developer в Luxoft
13 августа 2019, 15:57решение
Я забыл, что если у нас не в цикле, то не обнуляется ничего, а присваивается и все.
+2
Роман Java Developer в Luxoft
13 августа 2019, 15:53
По логике:
Ввожу player
playing
Ввожу dancer
dancing
ввожу свое что-то
ничего не должно вывести, но выводит dancing
0