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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.itheima.Demo;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Scanner;

import com.itheima.bean.Robot;

/*
*         模拟一个机器人与人对话的情景
* 创建一个机器人,该类有:状态(string) 和 话术(HashMap<string,string>)两个属性
* a. 添加话术(将一下的信息分别添加到map话术中)
*                 key(指令)                :                value(应答)
*                 "你好"                :                "您好,主人"
*                 "我饿了"                :                "您想吃什么,但是我不会做"
*                 "拜拜"                :                "拜拜"
* b. 根据用户在控制台输入的指令,打印出应答的话术,如果用户输入的指令没有对应的应答,则提示"对不起,我不知道怎么回答",直到用户
* 说拜拜,并且应答拜拜后才可以停止键盘录入(键盘录入之前需要检查当前机器人的状态)
* c. 将以上所有跟机器人的对话内容存入当前项目info.txt中
*/
public class Test11 {

        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
                HashMap<String, String> hs = new HashMap<>();
                hs.put("你好", "您好,主人");
                hs.put("我饿了", "您想说什么,但我不会做");
                hs.put("拜拜", "拜拜");

                String state = "close";
                Robot rt = new Robot(state, hs);

                /*
                 * b. 根据用户在控制台输入的指令,打印出应答的话术,如果用户输入的指令没有对应的应答,则提示"对不起,我不知道怎么回答",直到用户
                 * 说拜拜,并且应答拜拜后才可以停止键盘录入(键盘录入之前需要检查当前机器人的状态)
                 */
                Scanner sc = new Scanner(System.in);
                System.out.println("机器人当前状态为" + rt.getState() + "(输入\"open\"打开机器人)");
                while (true) {
                        String s = sc.nextLine();
                        if ("open".equals(s)) {
                                System.out.println("指令正确,机器人已开启,您现在可以跟机器人交流啦!!");
                                rt.setState(s);
                                BufferedWriter bw = new BufferedWriter(new FileWriter(
                                                "info.txt"));
                                while (true) {
                                        String line = sc.nextLine();
                                        if ("拜拜".equals(line)) {
                                                System.out.println(rt.getSpeak().get(line));
                                                bw.write(line + " -  " + rt.getSpeak().get(line));
                                                break;
                                        } else if (rt.getSpeak().containsKey(line)) {
                                                System.out.println(rt.getSpeak().get(line));
                                                bw.write(line + " -  " + rt.getSpeak().get(line));
                                        } else {
                                                System.out.println("对不起,我不知道怎么回答");
                                                bw.write(line + " -  " + "对不起,我不知道怎么回答");
                                        }
                                        bw.newLine();
                                }
                                bw.close();
                                break;
                        } else {
                                System.out.println("您输入的指令不对,请重新输入打开机器人的指令:");
                        }
                }
        }
}


点评

每一个实用的软件都是从好玩的小程序开始的  发表于 2016-9-7 20:34

320 个回复

倒序浏览
好玩.......
回复 使用道具 举报
真会玩,看着还行,打包成jar试试
回复 使用道具 举报
好玩  hashmap中还可以多加几条 比如讲个笑话什么的  挺有意思的
回复 使用道具 举报
NewBeeCoder 发表于 2016-9-4 10:08
好玩  hashmap中还可以多加几条 比如讲个笑话什么的  挺有意思的

嗯嗯,里面的话术可以随便填
回复 使用道具 举报
6666666666666
回复 使用道具 举报
挺好玩,学习一下
回复 使用道具 举报
有创意,不过可以增加多一点内容,再加上模糊匹配,应该就更好玩了,good idea
回复 使用道具 举报
恩,挺好玩的,还的多加点东西
回复 使用道具 举报
有想法,还可以继续扩展的
回复 使用道具 举报
可以可以
回复 使用道具 举报
本小白表示看不懂,赞一个吧
回复 使用道具 举报
貌似很不错的样子
回复 使用道具 举报
不错,可以弄下来看看
回复 使用道具 举报
朋友你这是在自嗨哈哈哈
回复 使用道具 举报
不错,赞一个
回复 使用道具 举报
匿名对象传参的调用过程是怎么回事?求解析步骤
回复 使用道具 举报
你们城里人真会玩啊,
回复 使用道具 举报
你们城里人真会玩啊,
回复 使用道具 举报
你们城里人真会玩啊。
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马