Не проходит по третьему пункту. Мой код:
public static void main(String[] args) throws Exception {
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    Person person = null;
    String key = null;
    boolean a = true;

    while (a) {
        key = reader.readLine();
        switch (key) {
            case ("user"):
                person = new Person.User();
                break;
            case ("loser"):
                person = new Person.Loser();
                break;
            case ("coder"):
                person = new Person.Coder();
                break;
            case ("proger"):
                person = new Person.Proger();
                break;
            default:
                a = false;
                break;
        }

        doWork(person);

    }
}

public static void doWork(Person person) {
    if (person instanceof Person.User) {
        ((Person.User) person).live();
    }
    if (person instanceof Person.Loser) {
        ((Person.Loser) person).doNothing();
    }
    if (person instanceof Person.Coder) {
        ((Person.Coder) person).writeCode();
    }
    if (person instanceof Person.Proger) {
        ((Person.Proger) person).enjoy();
    }
}