kuixisy 2023-04-08 22:59 采纳率: 66.7%
浏览 13
已结题

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

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是接口,怎么在所传递的对象上调用方法?

  • 写回答

1条回答 默认 最新

  • threenewbee 2023-04-09 09:21
    关注

    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();
            }
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月17日
  • 已采纳回答 4月9日
  • 创建了问题 4月8日

悬赏问题

  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch