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

为何while循环输出竖向列而非横向?Java直方图实现故障排查

直方图功能修复方案

原代码的问题分析

  • 使用System.out.println()输出导致星号竖向排列,且每行附带原数值,不符合横向输出星号的需求
  • 小数部分提取逻辑错误:num % 10无法正确获取小数点后的值(比如输入3.2时,num%10结果是3.2而非0.2),导致小数位小于5的数值无法正确取整
  • 两个if分支输出内容完全一致,属于冗余逻辑

修正后的实现代码

public void histogram(double num) {
    // 对输入数值四舍五入取整,得到星号数量
    int starCount = (int) Math.round(num);
    // 确保星号数量非负,处理0或负数输入
    starCount = Math.max(starCount, 0);
    
    // 横向拼接所有星号
    StringBuilder starLine = new StringBuilder();
    for (int i = 0; i < starCount; i++) {
        starLine.append("*");
    }
    
    // 输出最终的星号行
    System.out.println(starLine);
}

关键改进点

  • 正确取整:使用Math.round()直接实现四舍五入,完美匹配“小数位≥5向上取整,<5向下取整”的需求
  • 横向输出:通过StringBuilder一次性拼接所有星号后输出,保证星号横向排列
  • 边界处理:用Math.max()限制星号数量不小于0,输入0或负数时输出空行(0个星号)
  • 简化逻辑:删除原代码中无意义的重复判断,代码更简洁易读

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:10:19