一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java實現聊天機器人

Java實現聊天機器人

2021-09-26 00:42KillerCodes Java教程

這篇文章主要為大家詳細介紹了Java簡單實現聊天機器人,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Java實現聊天機器人的具體代碼,供大家參考,具體內容如下

服務器的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
package Day02;
import java.io.*;
import java.net.*;
 
 
public class Socket1 {
 public static void main(String[] args) throws Exception{
  int port=8899;
  ServerSocket server=null;
  MChat MC=new MChat();
  try {
   server=new ServerSocket(port);
   System.out.println("服務器啟動..."); 
   while(true) {
    Socket socket=server.accept();//監聽客戶端連接,如果客戶端連接成功,返回實例化的Socket對象
    System.out.println("客戶端信息:"+socket);
    //讀取流操作
    SocketThd thd=new SocketThd(socket);
    thd.start();
   }
  } catch (Exception e) {
   // TODO: handle exception
  }
  finally {
   try {
    if(server!=null)
     server.close();
    System.out.println("服務器已停止! ");
   } catch (Exception e2) {
    // TODO: handle exception
   }
  }
 }
static class SocketThd extends Thread{
 MChat MC=new MChat();
 Socket socket;//和客戶端進行通信的對象
 BufferedReader br=null;
 PrintWriter pw=null;
 public SocketThd(Socket socket) {
  this.socket=socket;
 }
 public void run() {
  //讀入流操作
    try {
     br=new BufferedReader(new InputStreamReader(socket.getInputStream(),"UTF-8"));
     //寫入流操作
     pw=new PrintWriter(
       new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8")));
     //接收客戶端發送來的信息
     String str="";
     
     while((str=br.readLine())!=null) {
      System.out.println("客戶端:"+str);
      //服務器處理
      String rtn="";
      //聊天機器人處理程序
      rtn=MC.getCharResult(str);
      //處理結果返回客戶端
      pw.println(rtn);
      pw.flush();
    }
   }
   catch (Exception e) {
     e.printStackTrace();
    }
    finally {
      // TODO: handle finally clause
      try {
       if(br!=null) br.close();
       if(pw!=null) pw.close();
       if(socket!=null) socket.close();
      } catch (Exception e2) {
       // TODO: handle exception
      }
    }   
  }
 }
}

客戶端的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package Day02;
 
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
 
public class Client1 {
 public static void main(String[] args) throws Exception{
  String IP="192.168.1.*";
  int port=8899;
  Socket socket=new Socket(IP,port);//建立與服務器連接
  
  //讀取流操作
  BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
  BufferedReader brKey=new BufferedReader(new InputStreamReader(System.in, "UTF-8"));
  //寫入流操作
  PrintWriter pw=new PrintWriter(
    new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF-8")));
  while(true) {
   String send=brKey.readLine();//等待阻塞命令
   if(send.equals("END")) {//鍵盤輸入的借宿條件
    break;
   }
   //向服務器發送信息
   
   pw.println(send);
   pw.flush();
   //接收服務端回復的消息
   String strRtn=br.readLine();
   
   System.out.println("服務端回復信息:"+strRtn);
  }
  //關閉連接
  br.close();
  pw.close();
  socket.close();
 }
}

對話內容引擎:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package Day02;
 
import java.util.Hashtable;
 
public class MChat {
 private Hashtable<String, String> htMS=new Hashtable<>();
 public String getCharResult(String sKey) {
  String str=htMS.get(sKey);
  if(str==null)
   return "";
  else
   return str;
  
 }
 public MChat() {
  htMS.put("你好呀","你也好呀,你需啊什么服務嗎?");
  htMS.put("見到你很高興","我也很高興見到你。");
  htMS.put("吃了嗎","今天吃的好飽呀");
  htMS.put("好累呀", "聽音樂輕松一下吧");
  htMS.put("路上好堵呀","需要哦給你選一條路線嗎");
  htMS.put("再見", "我先走了,有事你叫我");
 
 }
}

實現結果如下:

Java實現聊天機器人

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/aaassslll147/article/details/105521359

延伸 · 閱讀

精彩推薦
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
主站蜘蛛池模板: 男人狂躁女人下面狂叫图片 | 男人天堂视频网 | 日韩香蕉视频 | 色噜噜狠狠色综合 | 欧美精品日韩一区二区三区 | 奇米久草 | 亚洲人和日本人hd | 亚洲图片一区二区三区 | 第一福利在线视频 | 精品日韩二区三区精品视频 | 视频一区国产精戏刘婷 | 亚洲人成网站在线观看青青 | 国产精品99在线观看 | 欧美国产日韩1区俺去了 | 亚州人成网在线播放 | 国产精品免费_区二区三区观看 | 亚洲精品国产一区二区第一页 | 小舞同人18av黄漫网站 | 亚洲AV精品一区二区三区不卡 | 亚洲 欧美 国产 综合 播放 | 日本免费的一级绿象 | 四虎影视884aa·com| 精品牛牛影视久久精品 | 秘书喂奶好爽一边 | 日本漫画无翼乌 | 欧美日韩一区二区三区免费 | 国产传媒天美果冻 | 爱爱小说漫画 | 欧美人成绝费网站色www吃脚 | 精品一区二区三区高清免费不卡 | 美女被草漫画 | 日韩一品在线播放视频一品免费 | а天堂中文最新版在线官网视频 | 国产精品第一区揄拍 | 午夜国产精品福利在线观看 | 色综合合久久天天综合绕视看 | 久久91精品国产91久久户 | 欧美精品久久久亚洲 | 洗濯屋し在线观看 | 国产亚洲综合精品一区二区三区 | 亚洲经典 |