A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

模拟一个机器人与人对话的情景
创建一个机器人类(Robot),该类有:状态(String型,默认是关闭)和话术(HashMap<String, String>)两个属性
a.     添加话术(将以下的信息分别添加到map话术中)
           key(指令)    :          value(应答)
           “你好”       :     “您好,主人”
           “我饿了”     :    “您想吃什么,但是我不会做”
             “拜拜”       :    “拜拜”
b.     根据用户在控制台输入的指令,打印出应答的话术,如果用户输入的指令没有对应的应答,
            则提示“对不起,我不知道怎么回答,请换个问题问我”
            直到用户说拜拜,并且应答拜拜后才可以停止键盘录入
        (键盘录入之前需要检查当前机器人的状态,如果为关闭,则将机器人状态改为打开,不能不做状态判断就直接修改当前状态)
c.     将以上所有跟机器人的对话内容存入到当前项目info.txt中
        写入格式如下:
               (用户说的内容)—(机器人回答)
            比如:    你好-您好,主人
        我饿了-您想吃什么,但是我不会做
        今天天气怎么样?-对不起,我不知道怎么回答,请换个问题问我
        拜拜-拜拜

5 个回复

倒序浏览
回复 使用道具 举报
强大无比的厉害!
回复 使用道具 举报
public static void main(String[] args) throws IOException {
                HashMap<String, String> hm = new HashMap<String, String>();
                hm.put("你好","您好,主人");
                hm.put("我饿了", "您想吃什么,但是我不会做");
                hm.put("拜拜", "拜拜");
                Robot r = new Robot(hm);
//                先判断机器人状态,如果是closed的,则将状态改为open
                if(r.getState().equals("closed")){
                        r.setState("open");
                }
//                先创建键盘录入对象
                Scanner sc = new Scanner(System.in);
//                还要创建具有缓冲区的字符输出流对象
                BufferedWriter bw = new BufferedWriter(new FileWriter("info.txt"));
                String str = "对不起,我不知道怎么回答,请换个问题问我";
                System.out.println("Robot状态已是\"open\",可以开始对话:");
                while(true){
                        String line = sc.nextLine();
                        if(r.getResult().containsKey(line)){
                                if(line.equals("拜拜")){
                                        System.out.println(r.getResult().get(line));
                                        bw.write(line + "-" +r.getResult().get(line));
                                        bw.newLine();
                                        bw.close();
                                        break;
                                }else{
                                        System.out.println(r.getResult().get(line));
                                        bw.write(line + "-" +r.getResult().get(line));
                                        bw.newLine();
                                }
//                                如果用户输入的指令没有对应的应答,则提示“对不起,我不知道怎么回答,请换个问题问我”
                        }else{
                                System.out.println(str);
                                bw.write(line + "-" +str);
                                bw.newLine();
                        }
                }
               
        }
}

class Robot {
        public static String state = "closed";
        private HashMap<String,String> result;
        public Robot() {
                super();
        }
        public Robot(HashMap<String, String> result) {
                super();
                this.result = result;
        }
        public static String getState() {
                return state;
        }
        public static void setState(String state) {
                Robot.state = state;
        }
        public HashMap<String, String> getResult() {
                return result;
        }
        public void setResult(HashMap<String, String> result) {
                this.result = result;
        }
       
       
       
       
       
       
}
回复 使用道具 举报
27期基础班步招题
回复 使用道具 举报
6666666666666
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马