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. System.out.println("你叫什么名字:");
  6. String n = scan.next();
  7. if(n.equals(n)){
  8. System.out.println(n + " 大大你好");}

  9. while (true) {
  10. String talk = scan.next();
  11. // 模糊查询,contains包含
  12. if (talk.contains("你好")) {
  13. System.out.println("你好!how do you do?");}
  14. if (talk.contains("无聊")) {
  15. System.out.println("无聊?那我们来玩游戏吧");}
  16. }
  17.  
  18. }

效果如图:

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

四、

备注: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. //对话方法调用1.2,,剪刀石头布回复方法
  26. public static void talk() {
  27. while (true){
  28. a=(int) (Math.random()*10);//随机数产生工具
  29. if (a<3) {/*符合条件才往下运行,否则重新生成数字*/
  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. //剪刀石头布方法
  39. if (talk.contains("布")) {
  40. String[] tr={"我出布,平局","我出石头,我输了","我出剪刀,我赢了!"};
  41. System.out.println(tr[a]);}/*下标为:>0&&<3的随机整数。可随机输出tr数组的某一值。*/
  42. if (talk.contains("石头")) {
  43. String[] tr={"我出布,你输了","我出石头,平局","我出剪刀,我输了"};
  44. System.out.println(tr[a]);}/*下标为:>0&&<3的随机整数。可随机输出tr数组的某一值。*/
  45. if (talk.contains("剪刀")) {
  46. String[] tr={"我出布,我输了","我出石头,我赢了","我出剪刀,平局"};
  47. System.out.println(tr[a]);}/*下标为:>0&&<3的随机整数。可随机输出tr数组的某一值。*/
  48. //跳出循环
  49. if (talk.contains("再见")||talk.contains("拜拜")) {
  50. System.out.println("再见,下次再来!!");
  51. System.out.println("程序关闭!");
  52. System.exit(0);//exit(0)就是正常退出,非0就是异常退出
  53. break;}
  54. }
  55. }
  56. }
  57.  
  58. }

效果图:

java 聊天猜拳机器人的更多相关文章

  1. [Java聊天室server]实战之二 监听类

    前言 学习不论什么一个稍有难度的技术,要对其有充分理性的分析,之后果断做出决定---->也就是人们常说的"多谋善断":本系列尽管涉及的是socket相关的知识,但学习之前,更 ...

  2. [Java聊天室server]实战之五 读写循环(服务端)

    前言 学习不论什么一个稍有难度的技术,要对其有充分理性的分析,之后果断做出决定---->也就是人们常说的"多谋善断":本系列尽管涉及的是socket相关的知识,但学习之前,更 ...

  3. [Java聊天室server]实战之三 接收循环

    前言 学习不论什么一个稍有难度的技术,要对其有充分理性的分析,之后果断做出决定---->也就是人们常说的"多谋善断":本系列尽管涉及的是socket相关的知识.但学习之前,更 ...

  4. 打造一个window桌面应用:在线聊天对话机器人

    大家好,我是辰哥~~~ 本文目标:打造一个window桌面应用:在线聊天对话机器人. 今天辰哥教大家做一个在线聊天对话机器人桌面应用,已经打包成exe可执行文件,读者可以直接拿来使用, 先上演示图 聊 ...

  5. Java接入图灵机器人,实现与机器人聊天

    很多人都玩过微信,其中就有与机器人聊天的功能:

  6. Vue2 全家桶仿 微信App 项目,支持多人在线聊天和机器人聊天

    前言 这个项目是利用工作之余写的一个模仿微信app的单页面应用,整个项目包含27个页面,涉及实时群聊,机器人聊天,同学录,朋友圈等等,后续页面还是开发中.写这个项目主要目的是练习和熟悉vue和vuex ...

  7. python与java的猜拳游戏

    python版: import randomprint("-----猜拳游戏-----")print("---0.剪刀--1.石头--2.布---")while ...

  8. java 聊天程序

    package cn.apr.chart; import java.net.*; import java.io.*; import java.util.*; public class ChatServ ...

  9. Java聊天室[长轮询]

    今天看到有人分享java实现的聊天室,想起很久以前还在热衷于java的时候也做过一个web聊天室,不拿出来晒晒,可能再也不为人知了,单纯是一个兴趣作品,稳定性不好,也没有考虑连接数和并发的问题,拿出来 ...

随机推荐

  1. eclipse项目打包

    一.直接在eclipse里export即可 二.如果需要打好的包可以直接使用,则需要修改包中的META-INF文件夹中的MANIFEST.MF文件,主要可能会涉及到的字段主要有以下两个. 1.Main ...

  2. CSS布局奇淫技巧之--各种居中

    居中是我们使用css来布局时常遇到的情况.使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍. 注:本文所讲方法除了特别说明 ...

  3. easyUI的combobox是否可用

    $('#ID').combobox('enable'); $('#ID').combobox('disable');

  4. MVC中渲染页面

    mvc中当返回的字符带有html代码的时候,可以直接使用@Html.Raw(Model.description)这句代码的意思就是返回不是html编码,因此用了这句代码就不需要单独再转换一次

  5. 搭建Apache Web服务器

    1.下载Apache服务器的安装包 地址:http://httpd.apache.org/download.cgi 从http://archive.apache.org/dist/httpd/bina ...

  6. 国内github访问慢的解决方法

    本文是windows处理方法,macos方法也差不多. 一般Github的访问有两部分:主站的访问和二级域名的资源加载(比如样式文件等) 一般Github加载缓慢,主要是 assets-cdn.git ...

  7. RecyclerView各种报错

    昨天有人提到RecyclerView,于是我就照着官方的文档研究了下使用方法,结果发现示例代码有问题真是醉. 自己修改后编译是没有问题的但是运行的时候总是报错,大意就是提示找不到RecyclerVie ...

  8. maven实战(04)_在pom中使用properties

    使用常量不仅让代码变得简洁,更重要的是可以避免重复,在需要更改的时候,只需要修改一处,降低了错误发生的概率. <project> <modelVersion>4.0.0< ...

  9. WinForm各种API---时时更新

    好文要顶 关注我 收藏该文 徐淳 关注 - 1 粉丝 - 3       0 0     本文原文地址:http://www.cnblogs.com/hqxc/p/6160685.html 徐淳 [D ...

  10. [转载]js中return的用法

    一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return;  在大多数情况下,为事件处理函 ...