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

Java奇怪BUG:将Weight改为double类型后出现输入交互异常

解决问答交互中输入串行的问题

这种问题我之前也碰到过好几次,大概率是输入流的换行符残留搞的鬼!

问题根源

当你用输入工具(比如Java的Scanner)读取double类型的数值时,用户输入完数字后按下的回车(\n)会留在输入缓冲区里。当下一次读取字符串类型的输入(比如下一个问题的回答)时,程序会直接把这个残留的换行符当成空输入,导致前一个问题的提示还没等用户输入,下一个问题的提示就直接打在了同一行。

两种快速修复方案

  • 方案一:读取double后手动清空换行符
    在读取完double类型的Weight后,额外调用一次读取整行的方法,把缓冲区里的换行符“吃掉”:

    System.out.print("请输入物品重量:");
    double weight = scanner.nextDouble();
    scanner.nextLine(); // 清除输入缓冲区中残留的换行符
    // 接下来处理下一个问题的输入就正常了
    System.out.print("请输入物品名称:");
    String name = scanner.nextLine();
    
  • 方案二:先读字符串再转double
    换一种读取方式,先读取完整的输入行,再转换成double类型,从根源上避免换行符残留:

    System.out.print("请输入物品重量:");
    String weightInput = scanner.nextLine();
    double weight = Double.parseDouble(weightInput);
    // 后续的输入读取不会受影响
    

额外排查点

如果上面的方法没用,再检查下你的输出语句:是不是用了System.out.print()而没加换行?如果前一个问题的提示没有换行,也可能导致和下一个问题挤在同一行,但这种情况一般不会是改了double才出现的,所以优先级靠后排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:39:45