键盘读取字符串和接口相关问题

public class Solution {
    public static void main(String[] args) throws Exception {
        //main 方法必须从键盘读取字符串
        Person person = null;
        String key = null;
        while (true) {
            key = reader.readLine();
            if (!(key.equals("user") || key.equals("loser") || key.equals("coder") || key.equals("programmer")))
            /*
            补全代码
            //读取任何与上述内容不匹配的字符串后停止读取。
            */                
        }
    }
    public static void doWork(Person person) {
        /*
            补全代码
            调用 doNothing() 方法(如果人是 Loser)。
            调用 writeCode() 方法(如果人是 Coder)。
            调用 enjoy() 方法(如果人是 Programmer)    
        */      
    }
}

尝试了多种方法,解不出,还在尝试。
过程中主要是给定的代码key = reader.readLine();这一行代码,频繁报错error: cannot find symbol,也试过换成Scanner但是也不行,求帮助。
然后这个Person是接口,怎么在所传递的对象上调用方法?

person的定义没有?
大概写一个

public class Solution {
    public static void main(String[] args) throws Exception {
        //main 方法必须从键盘读取字符串
        Person person = null;
        String key = null;
        while (true) {
            key = reader.readLine();
            if (key.equals("user")) {
                person = new Person.User();
                break;
            } else if (key.equals("loser")) {
                person = new Person.Loser();
                break;
            } else if (key.equals("coder")) {
                person = new Person.Coder();
                break;
            } else if (key.equals("programmer")) {
                person = new Person.Programmer();
                break;
            } else {
                //读取任何与上述内容不匹配的字符串后停止读取。
                break;
            }
        }
        doWork(person);
    }

    public static void doWork(Person person) {
        /*
            补全代码
            调用 doNothing() 方法(如果人是 Loser)。
            调用 writeCode() 方法(如果人是 Coder)。
            调用 enjoy() 方法(如果人是 Programmer)    
        */ 
        if (person instanceof Person.Loser) {
            ((Person.Loser) person).doNothing();
        } else if (person instanceof Person.Coder) {
            ((Person.Coder) person).writeCode();
        } else if (person instanceof Person.Programmer) {
            ((Person.Programmer) person).enjoy();
        }
    }
}