0

0

在Java里如何完成控制台聊天模拟程序_Java基础项目说明

P粉602998670

P粉602998670

发布时间:2026-01-28 11:28:25

|

167人浏览过

|

来源于php中文网

原创

控制台聊天模拟程序需用多线程分离输入与输出以避免阻塞假死,推荐输入线程用Scanner(System.in, "UTF-8")读取,输出线程用volatile标志位控制定时回复,并通过ConcurrentLinkedQueue传递消息,同时注意Windows下cmd编码需设为UTF-8。

在java里如何完成控制台聊天模拟程序_java基础项目说明

控制台聊天模拟程序不需要网络通信,核心是多线程协调输入与输出,避免阻塞导致“卡死”

Scanner 读取用户输入时必须注意阻塞问题

控制台输入本质是阻塞式操作,Scanner.nextLine() 会一直等回车。如果把它放在主线程里,而另一方(比如模拟的“对方”)也依赖主线程输出,就会互相等待、假死。

  • 不要把输入和输出逻辑都塞进同一个循环或同一个线程
  • 推荐拆成两个独立线程:一个专管 System.in 输入,另一个负责定时/事件驱动的输出(比如模拟对方回复)
  • 若仅做单机双角色模拟(如 A 和 B 轮流说话),可用 while + Scanner + 状态标记,但需明确约定输入格式(例如以 /quit 退出)

Thread 模拟“对方回复”要避免忙等待

直接写 while(true) { Thread.sleep(1000); System.out.println("B: ..."); } 看似简单,但容易和用户输入冲突,且无法响应中断。

  • 给模拟回复线程设置标志位(如 volatile boolean running = true),在用户输入 /quit 后设为 false 安全退出
  • Thread.sleep() 代替空循环,减少 CPU 占用
  • 若想让“对方”更智能(比如根据输入关键词回复),可在输入线程中把消息存入 Queue,回复线程从中取值处理——注意加同步或用 ConcurrentLinkedQueue

中文乱码常见于 Windows 控制台默认编码

在 IntelliJ 或 Eclipse 运行正常,但 cmd 中运行出现问号或方块,大概率是编码不匹配。

码上飞
码上飞

码上飞(CodeFlying) 是一款AI自动化开发平台,通过自然语言描述即可自动生成完整应用程序。

下载

立即学习Java免费学习笔记(深入)”;

  • Java 源文件保存为 UTF-8,但 Windows cmd 默认是 GBK,Scanner 会按平台默认编码读取
  • 显式指定输入编码:new Scanner(System.in, "UTF-8")(前提是终端已用 chcp 65001 切换到 UTF-8)
  • 更稳妥做法:统一用 InputStreamReader + BufferedReader,并传入 StandardCharsets.UTF_8

真正难的不是写完能“一问一答”,而是让两个角色看起来在“同时”说话、不抢光标、不丢消息、能随时退出——这些细节全藏在线程协作和 I/O 缓冲控制里。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
eclipse教程
eclipse教程

php中文网为大家带来eclipse教程合集,eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。php中文网还为大家带来eclipse的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

191

2023.06.14

eclipse怎么设置中文
eclipse怎么设置中文

eclipse设置中文的方法:除了设置界面为中文外,你还可以为Eclipse添加中文插件,以便更好地支持中文编程。例如,你可以安装EBNF插件来支持中文变量名,或安装Chinese Helper来提供中文帮助文档。本专题为大家提供eclipse设置中文相关的各种文章、以及下载和课程。

795

2023.07.24

c语言编程软件有哪些
c语言编程软件有哪些

c语言编程软件有GCC、Clang、Microsoft Visual Studio、Eclipse、NetBeans、Dev-C++、Code::Blocks、KDevelop、Sublime Text和Atom。更多关于c语言编程软件的问题详情请看本专题的文章。php中文网欢迎大家前来学习。

596

2023.11.02

Eclipse版本号有哪些区别
Eclipse版本号有哪些区别

区别:1、Eclipse 3.x系列:Eclipse的早期版本,包括3.0、3.1、3.2等;2、Eclipse 4.x系列:Eclipse的最新版本,包括4.0、4.1、4.2等;3、Eclipse IDE for Java Developers等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

167

2024.02.23

eclipse和idea有什么区别
eclipse和idea有什么区别

eclipse和idea的区别:1、平台支持;2、内存占用;3、插件系统;4、智能代码提示;5、界面设计;6、调试功能;7、学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

138

2024.02.23

eclipse设置中文全教程
eclipse设置中文全教程

本专题整合了eclipse设置中文相关教程,阅读专题下面的文章了解更多详细操作。

109

2025.10.10

eclipse字体放大教程
eclipse字体放大教程

本专题整合了eclipse字体放大教程,阅读专题下面的文章了解更多详细内容。

136

2025.10.10

eclipse左边栏不见了解决方法
eclipse左边栏不见了解决方法

本专题整合了eclipse左边栏相关教程,阅读专题下面的文章了解更多详细内容。

110

2025.10.15

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

158

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 3万人学习

C# 教程
C# 教程

共94课时 | 7.8万人学习

Java 教程
Java 教程

共578课时 | 52.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号