• 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    }

    效果图:

    欢迎转载,请注明出处!
  • 相关阅读:
    用GUI完成了斗地主发牌
    地主发牌
    用三种循环完成了累加
    DataSet、DataTable、DataRow的数据复制方法
    C# Merge into的使用详解
    grid+report 怎么在项目中使用
    SQL Server 2008 R2:error 26 开启远程连接详解
    EF框架的优点是什么?
    Oracle中的case when then else end 应用
    SQL中的case when then else end用法
  • 原文地址:https://www.cnblogs.com/xuehx/p/6094785.html
Copyright © 2020-2023  润新知