黑马程序员技术交流社区
标题:
模拟一个机器人与人对话的情景
[打印本页]
作者:
梦想的小草
时间:
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