Вроде условия не нарушал.
package com.javarush.task.task14.task1411;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/*
User, Loser, Coder and Proger
*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Person person = null;
while(true) {
String key = reader.readLine();
if(key.equals("user")) {
person = new Person.User();
doWork(person);
} else if (key.equals("loser")) {
person = new Person.Loser();
doWork(person);
} else if (key.equals("coder")) {
person = new Person.Coder();
doWork(person);
} else if (key.equals("proger")) {
person = new Person.Proger();
doWork(person);
} else { break; }
}//тут цикл по чтению ключей, пункт 1 + + +
//создаем объект, пункт 2
//{
// doWork(person);//вызываем doWork
//}
}
public static void doWork(Person person) {
if(person instanceof Person.User) {
Person.User.live();
} else if(person instanceof Person.Loser) {
Person.Loser.doNothing();
} else if(person instanceof Person.Coder) {
Person.Coder.writeCode();
} else if(person instanceof Person.Proger) {
Person.Proger.enjoy();
}
// пункт 3
}
}