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

工具:eclipse;JAVA JDK;

语言:java

时间:2016.11.23

作者:潇洒鸿图

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


一、

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

 import java.util.Scanner;

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

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

二、

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

 public static void b(){
Scanner sc = new Scanner(System.in);
String talk=""; while(true){
talk=sc.next();
if(talk.contains("哈哈"))
    {System.out.println("嘿嘿");}
if(talk.contains("嘿嘿"))
    {System.out.println("嘿嘿嘿");}
if(talk.contains("嘿哈"))
    {System.out.println("嘿+4");}
}
}

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

三、

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

 public static void wen() {
Scanner scan = new Scanner(System.in);
String n2 = null;
System.out.println("你叫什么名字:");
String n = scan.next();
if(n.equals(n)){
System.out.println(n + " 大大你好");}

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

效果如图:

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

四、

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

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

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

2016.11.25日续。

 package com.tz.util;

 import java.util.Scanner;

 public class c {
public static void main(String[] args) { c1(); } //对话方法调用1.1
public static void c1() {
Scanner scan = new Scanner(System.in); System.out.println("你叫什么名字:");
String n = scan.next(); if(n.equals(n)){
System.out.println(n + ",你好");} talk();
} //对话方法调用1.2
public static void talk() {
Scanner scan = new Scanner(System.in); while (true) {
String talk = scan.next(); if (talk.contains("你好")) {
System.out.println("你好!how do you do?");}
if (talk.contains("无聊")) {
System.out.println("无聊?那我们来玩游戏吧");}
if (talk.contains("玩")) {
System.out.println("那我们来玩剪刀石头布吧");}
if (talk.contains("石头")) {
System.out.println("我出布,你输了");}
if (talk.contains("剪刀")) {
System.out.println("我出石头,我赢了");}
if (talk.contains("布")) {
System.out.println("我出剪刀,我赢了");}
if (talk.equals("再见")) {
System.out.println("再见,我们下次再玩");
System.out.println("程序关闭");break;} } } }

效果如图:


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

五、

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

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

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

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

 package com.tz.util;

 import java.util.Scanner;

 public class c {
//全局变量
static Scanner scan = new Scanner(System.in);
static int a;
//主函数
public static void main(String[] args) { c1();
} //对话方法调用1.1
public static void c1() {
System.out.println("你叫什么名字:");
String n = scan.next(); if(n.contains(n)){/*问候*/
System.out.println(n + " 大大你好");}
talk();/*剪刀石头布游戏*/
} //对话方法调用1.2,,剪刀石头布回复方法
public static void talk() {
while (true){
a=(int) (Math.random()*10);//随机数产生工具
if (a<3) {/*符合条件才往下运行,否则重新生成数字*/
String talk = scan.next();/*接收用户的指令*/
//打招呼
if (talk.contains("你好")) {
System.out.println("你好!how do you do?");}
if (talk.contains("无聊")) {
System.out.println("无聊?那我们来玩游戏吧");}
if (talk.contains("玩")) {
System.out.println("那我们来玩剪刀石头布吧");}
//剪刀石头布方法
if (talk.contains("布")) {
String[] tr={"我出布,平局","我出石头,我输了","我出剪刀,我赢了!"};
System.out.println(tr[a]);}/*下标为:>0&&<3的随机整数。可随机输出tr数组的某一值。*/
if (talk.contains("石头")) {
String[] tr={"我出布,你输了","我出石头,平局","我出剪刀,我输了"};
System.out.println(tr[a]);}/*下标为:>0&&<3的随机整数。可随机输出tr数组的某一值。*/
if (talk.contains("剪刀")) {
String[] tr={"我出布,我输了","我出石头,我赢了","我出剪刀,平局"};
System.out.println(tr[a]);}/*下标为:>0&&<3的随机整数。可随机输出tr数组的某一值。*/
//跳出循环
if (talk.contains("再见")||talk.contains("拜拜")) {
System.out.println("再见,下次再来!!");
System.out.println("程序关闭!");
System.exit(0);//exit(0)就是正常退出,非0就是异常退出
break;}
}
}
} }

效果图:

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. [asp.net core] Tag Helpers 简介(转)

    原文地址 https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/intro What are Tag Helpers? ...

  2. Demo 版

    Demo1   美食网站 Demo2   12301智慧旅游公共服务平台 Demo3   react_and_koa example

  3. keras安装

    找对工具真的很重要,周末和学霸折腾了一天才装了几个包,问了同事找了一个方便的包,装起来不要太快啊.二十分钟全部搞定. 一.Anaconda 真是大杀器,牛到飞起来,一键部署,所有常用的机器学习包全部包 ...

  4. spring统一日志管理,切面(@Aspect),注解式日志管理

    step1 开启切面编程 <!-- 开启切面编程(通过配置织入@Aspectj切面 ) --> <aop:aspectj-autoproxy/> <aop:aspectj ...

  5. struts.xml

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC    " ...

  6. 改变bootstrap-wysiwyg样式(如hide()show()等),上传图片失效

    最近在试验bootstrap-wysiwyg鱼easyui的整合,两者的兼容性,可以说是基本不兼容... 但是由于需求摆在那里,再大的困难也得克服. 比如像是将bootstrap-wysiwyg放入e ...

  7. Python绘图

    1.二维绘图 a. 一维数据集 用 Numpy ndarray 作为数据传入 ply 1. import numpy as np import matplotlib as mpl import mat ...

  8. JavaScript基础(一)之语法、变量、数据类型

    1.JavaScript语法 ①区分大小写 ②弱类型变量 ③每行结尾分号可有可无 ④括号用于代码块 ⑤注释有两种方式(单行和多行注释) 2.JavaScrip变量 ①用Var声明,不要初始化 ②可以在 ...

  9. Linux下实现秒级的crontab定时任务

    crontab的格式如下 * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 ...

  10. Linux下安装tensorflow