You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java类中BufferedWriter在驱动代码中无法输出的修复方案咨询

问题修复方案

核心问题及修复步骤:

  1. BufferedWriter未刷新缓冲区,导致菜单无法显示
    BufferedWriter是带缓冲的输出流,调用write()后内容会暂存于缓冲区,不会立刻输出到控制台。必须手动调用flush()强制刷新缓冲区,才能让用户看到菜单内容。

修改AdminView的main方法,在写完所有菜单选项后添加flush操作:

writer.write("0. Exit\n");
writer.write("1. View news\n");
writer.write("2. View personal info\n");
writer.write("3. Change password\n");
writer.write("4. Create user\n");
writer.flush(); // 新增该行,强制输出缓冲区内容
String ans = reader.readLine();
  1. Switch Case缺少break语句,导致执行多个分支
    当前switch的每个case后都没有break,选择任意选项后会依次执行后续所有case的代码(比如选1会连续执行viewNews、viewPersonalInfo、changePassword、createUser所有方法)。需要给每个case添加break:
switch(ans){
    case "0":
        return;
    case "1":
        viewNews();
        break; // 新增
    case "2":
        viewPersonalInfo();
        break; // 新增
    case "3":
        changePassword();
        break; // 新增
    case "4":
        createUser();
        break; // 新增
    default:
        writer.write("无效选项,请重新输入\n");
        writer.flush(); // 可选:添加默认分支提示用户
}
  1. 字符串换行符的规范写法
    原代码里的换行直接写在字符串中,建议用\n或者System.lineSeparator()保证跨平台兼容性,比如把"0. Exit\n"替换为"0. Exit" + System.lineSeparator()。

额外建议

  • 程序退出时可以关闭reader和writer资源,避免资源泄漏,比如在return前添加reader.close(); writer.close();(需处理IOException)。
  • 保留switch的default分支,处理用户输入无效选项的情况,提升交互体验。

内容的提问来源于stack exchange,提问作者Chingis Bagdatov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:55:24