java 聊天猜拳机器人

2016-12-06本随笔记录第一次学习经过。

工具:eclipse;JAVA JDK;

语言:java

时间:2016.11.23

作者:潇洒鸿图

地址:http://www.cnblogs.com/xuehx/p/6094785.html


 

 一、

备注:采用最简单if语句能够实现最简单的人机对话,但是程序只能回复一次,一次之后结束运行,很尴尬。(后续使用else if可以继续执行,未加的不能执行.2016.11.25.)

 

 1 import java.util.Scanner;
 2 
 3 //下面是一个最简单的人机互动对话代码,最简单的聊天机器人。
 4 public class a {
 5 public static void main(String[] args) {
 6     Scanner scan=new Scanner(System.in);
 7     String talk = scan.next();//把从控制台输入的信息复制给talk。
 8     
 9     if(talk.contains("哈喽")){
10         System.out.println("哈喽!how are you?");}
11     if(talk.contains("名字")){
12         System.out.println("我的名字叫做:蛋白robot");}
13     if(talk.contains("作者")){
14         System.out.println("我的作者是:蛋白");}
15 }
16 }

 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

二、

备注:采用while(true)嵌套if的方式,不仅可以实现最简单的人机对话,还能使程序运行一次之后不中断。

 

 1 public static void b(){
 2 Scanner sc = new Scanner(System.in);
 3 String talk="";
 4 
 5 while(true){
 6 talk=sc.next();
 7 if(talk.contains("哈哈"))
    {System.out.println("嘿嘿");} 8 if(talk.contains("嘿嘿"))
    {System.out.println("嘿嘿嘿");} 9 if(talk.contains("嘿哈"))
    {System.out.println("嘿+4");} 10 } 11 }

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

三、

备注:使用n.contains(n),可以实现人机之间更逼真的互动。2016.11.24日续。

 

 1 public static void wen() {
 2     Scanner scan = new Scanner(System.in);
 3     String n2 = null; 
 4     
 5   
6 System.out.println("你叫什么名字:"); 7 String n = scan.next(); 8 if(n.equals(n)){ 9 System.out.println(n + " 大大你好");} 10
11 while (true) { 12 String talk = scan.next(); 13 // 模糊查询,contains包含 14 if (talk.contains("你好")) { 15 System.out.println("你好!how do you do?");} 16 if (talk.contains("无聊")) { 17 System.out.println("无聊?那我们来玩游戏吧");} 18 } 19 20 }

效果如图:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

四、

 备注:1、使用break;可以结束while(true)的死循环,以便结束程序。

    2、把对话库重新声明一个方法talk,以便阅读和修改。

    3、缺点:当判断不了对话内容时,不打印语句。

2016.11.25日续。

 

 1 package com.tz.util;
 2 
 3 import java.util.Scanner;
 4 
 5 public class c {
 6 public static void main(String[] args) {
 7     
 8     c1();
 9     
10 }
11 
12 //对话方法调用1.1
13 public static void c1() {
14     Scanner scan = new Scanner(System.in);
15     
16         System.out.println("你叫什么名字:");
17         String n = scan.next();
18         
19         if(n.equals(n)){
20             System.out.println(n + ",你好");}
21         
22             talk();
23 }
24 
25 //对话方法调用1.2
26 public static void talk() {
27     Scanner scan = new Scanner(System.in);
28 
29     while (true) {
30         String talk = scan.next();
31         
32         if (talk.contains("你好")) {
33             System.out.println("你好!how do you do?");}
34         if (talk.contains("无聊")) {
35             System.out.println("无聊?那我们来玩游戏吧");}
36         if (talk.contains("玩")) {
37             System.out.println("那我们来玩剪刀石头布吧");}
38         if (talk.contains("石头")) {
39             System.out.println("我出布,你输了");}
40         if (talk.contains("剪刀")) {
41             System.out.println("我出石头,我赢了");}
42         if (talk.contains("布")) {
43             System.out.println("我出剪刀,我赢了");}
44         if (talk.equals("再见")) {
45             System.out.println("再见,我们下次再玩");
46             System.out.println("程序关闭");break;}
47 
48         }  
49     
50    }
51 
52 }

效果如图:

 


 

~~~~~~~~~~~~~~~~~

五、

备注:(1)优点:数组结合随机数可以实现程序的随机输出。使输出的结果出人意料无法预测

   (2)使用System.exit(0);使系统真正正常退出。在被其他类调用时不会自起。

   (3)缺点:运行量(次数)增大,此处应用不够灵活。

   时间:2016.12.6号---->14:49:38

 

 1 package com.tz.util;
 2 
 3 import java.util.Scanner;
 4 
 5 public class c {
 6     //全局变量
 7     static Scanner scan = new Scanner(System.in);
 8     static int a;
 9     //主函数
10 public static void main(String[] args) {
11     
12     c1();
13 }
14 
15 //对话方法调用1.1
16 public static void c1() {
17     System.out.println("你叫什么名字:");
18     String n = scan.next();
19     
20     if(n.contains(n)){/*问候*/
21         System.out.println(n + " 大大你好");}
22         talk();/*剪刀石头布游戏*/
23 }
24 
25 
26 //对话方法调用1.2,,剪刀石头布回复方法 
27 public static void talk() {
28     while (true){
29         a=(int) (Math.random()*10);//随机数产生工具
30         if (a<3) {/*符合条件才往下运行,否则重新生成数字*/
31             String talk = scan.next();/*接收用户的指令*/
32             //打招呼
33             if (talk.contains("你好")) {
34                 System.out.println("你好!how do you do?");}
35             if (talk.contains("无聊")) {
36                 System.out.println("无聊?那我们来玩游戏吧");}
37             if (talk.contains("玩")) {
38                 System.out.println("那我们来玩剪刀石头布吧");}
39             //剪刀石头布方法
40                 if (talk.contains("布")) {
41                     String[] tr={"我出布,平局","我出石头,我输了","我出剪刀,我赢了!"};
42                     System.out.println(tr[a]);}/*下标为:>0&&<3的随机整数。可随机输出tr数组的某一值。*/
43                 if (talk.contains("石头")) {
44                     String[] tr={"我出布,你输了","我出石头,平局","我出剪刀,我输了"};
45                     System.out.println(tr[a]);}/*下标为:>0&&<3的随机整数。可随机输出tr数组的某一值。*/
46                 if (talk.contains("剪刀")) {
47                     String[] tr={"我出布,我输了","我出石头,我赢了","我出剪刀,平局"};
48                     System.out.println(tr[a]);}/*下标为:>0&&<3的随机整数。可随机输出tr数组的某一值。*/
49                     //跳出循环    
50                 if (talk.contains("再见")||talk.contains("拜拜")) {
51                 System.out.println("再见,下次再来!!");
52                 System.out.println("程序关闭!");
53                 System.exit(0);//exit(0)就是正常退出,非0就是异常退出
54                     break;}
55             }
56         }
57 }
58 
59 
60 
61    }

 

效果图:

 

posted @ 2016-11-23 18:35  黄皮书生  阅读(1431)  评论(0编辑  收藏  举报