黑马程序员技术交流社区

标题: 模拟一个机器人与人对话的情景 [打印本页]

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

作者: 695212308    时间: 2016-9-2 23:01

作者: gcno93    时间: 2016-9-2 23:02
强大无比的厉害!
作者: 长空皓月    时间: 2016-9-26 22:04
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;
        }
       
       
       
       
       
       
}

作者: 勿忘`初心    时间: 2016-9-26 23:13
27期基础班步招题
作者: 小沧月    时间: 2016-9-27 00:19
6666666666666




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2