задачу решил так
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
Person person = null;
String key = null;
while(true){
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;
}
}
public static void doWork(Person person) {
if (person instanceof Person.User){
((Person.User)person).live();
}
else if (person instanceof Person.Loser){
((Person.Loser)person).doNothing();
}
else if (person instanceof Person.Coder){
((Person.Coder)person).writeCode();
}
else if (person instanceof Person.Proger){
((Person.Proger)person).enjoy();
}
}
}
до этого был следующий вариант. менял только часть в main, dowork был прежним
while(true){
key = reader.readLine();
if(key != "user" || key != "loser" || key != "coder" || key != "proger"){
break;
}
else 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);
}
}
почему второй вариант не проходил. не могу понять, что неправильно в цикле?