0

0

在Java中如何实现控制台版留言板_Java基础项目解析

P粉602998670

P粉602998670

发布时间:2026-02-22 11:45:12

|

755人浏览过

|

来源于php中文网

原创

用scanner读输入、arraylist存留言实现增删查:新增校验空内容,删除时序号减1转换,遍历用增强for;退出前用utf-8编码文件保存,scanner需全局共享避免重复创建。

在java中如何实现控制台版留言板_java基础项目解析

如何用 Scanner + ArrayList 实现留言增删查

控制台留言板本质是内存中的数据管理,不需要数据库。核心就是用 ArrayList<string></string> 存留言,配合 Scanner 读用户输入。别一上来就搞文件持久化或 Swing 界面,先跑通基本流程。

常见错误:直接用 System.in.read() 读字符串,结果只拿到第一个字符;或者用 next() 而不是 nextLine(),导致换行符残留、后续输入跳过。

  • 始终用 scanner.nextLine() 读整行输入(包括空格和中文)
  • 新增留言时,建议对内容做基础校验:if (content.trim().isEmpty()) 跳过空提交
  • 删除按序号操作时,注意 list.remove(index) 的索引从 0 开始,但显示给用户时通常从 1 开始,记得减 1
  • 遍历输出用增强 for 循环即可,不需要手写 for (int i = 0; i —— 容易越界

为什么不能用 String[] 而必须用 ArrayList

留言数量不确定,String[] 初始化后长度固定。每次新增都要新建数组、复制元素,效率低且代码臃肿。而 ArrayList 内部自动扩容,接口简洁。

典型翻车场景:声明 String[] messages = new String[5];,填满后用户再发第 6 条,程序直接抛 ArrayIndexOutOfBoundsException,而不是友好提示“已满”。

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

智谱清影
智谱清影

智谱清影是智谱AI最新推出的一款AI视频生成工具

下载
  • ArrayListadd()remove() 时间复杂度平均 O(1),足够应付百条以内留言
  • 如果真要限制最大条数,用 if (list.size() >= MAX_SIZE) 判断,比手动管理数组下标清晰得多
  • 别为了“省事”用静态数组 + 全局计数器变量,容易在多处修改时不同步

如何让退出前自动保存到本地文件

纯控制台程序关闭即丢数据,用户会抱怨“刚写的留言没了”。用 FileWriter + BufferedWriter 在退出前 dump 到 messages.txt 即可,不用上 ObjectOutputStream 序列化。

关键陷阱:路径没写对、没关流、中文乱码。Windows 默认编码是 GBK,但 IDE(如 IntelliJ)常设 UTF-8,不指定编码会写成乱码。

  • 保存时强制指定编码:new OutputStreamWriter(new FileOutputStream("messages.txt"), "UTF-8")
  • 务必在 finally 块或 try-with-resources 中关闭 BufferedWriter,否则可能内容没真正写入磁盘
  • 启动时若文件存在,用 Files.readAllLines(Paths.get("messages.txt"), StandardCharsets.UTF_8) 加载,比手动逐行读更安全
  • 不要在每次增删都实时写文件——IO 操作慢,且频繁写可能被杀毒软件拦截

怎样避免 main 方法里堆满 if-else 分支逻辑

把菜单选择、功能执行拆成独立方法,比如 showMenu()handleAdd()handleList()。main 只负责循环调用和分发,否则 200 行全挤在一块,改个提示语都怕牵出 bug。

另一个常见混乱点:把 Scanner 创建放在方法内部,导致多次 new Scanner(System.in) —— 第二次调用会报 IllegalStateException: Scanner closed

  • Scanner 必须作为类成员变量或传参共享,不能每个方法都 new 一个
  • 菜单循环用 while (true) + break 最直白,别硬套 do-while 或状态机
  • 输入非数字时,scanner.hasNextInt() 要配合 scanner.next() 清掉非法 token,否则会无限卡在同一次输入

最易忽略的是输入缓冲区残留:比如用户输完“3”想删除,回车后 nextLine() 立刻返回空字符串。这不是 bug,是 nextInt() 不吃换行符的正常行为。要么统一用 nextLine() 后 parse,要么每次 nextInt() 后跟一句 scanner.nextLine() 吸掉回车。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

通义千问
通义千问

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

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

810

2023.08.02

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

826

2023.08.22

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

103

2023.09.25

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6408

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

837

2023.09.14

token怎么获取
token怎么获取

获取token值的方法:1、小程序调用“wx.login()”获取 临时登录凭证code,并回传到开发者服务器;2、开发者服务器以code换取,用户唯一标识openid和会话密钥“session_key”。想了解更详细的内容,可以阅读本专题下面的文章。

1087

2023.12.21

token什么意思
token什么意思

token是一种用于表示用户权限、记录交易信息、支付虚拟货币的数字货币。可以用来在特定的网络上进行交易,用来购买或出售特定的虚拟货币,也可以用来支付特定的服务费用。想了解更多token什么意思的相关内容可以访问本专题下面的文章。

1660

2024.03.01

java中break的作用
java中break的作用

本专题整合了java中break的用法教程,阅读专题下面的文章了解更多详细内容。

120

2025.10.15

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

928

2026.02.13

热门下载

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

精品课程

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

共23课时 | 3.8万人学习

C# 教程
C# 教程

共94课时 | 9.9万人学习

Java 教程
Java 教程

共578课时 | 69.7万人学习

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

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