Java直方图绘制代码修复求助:匹配目标输出格式
修复Java直方图代码的问题
首先,先明确你想要的目标输出格式:
1 - 5: **** 6 - 10: ****** 11 - 15: ** 16 - 20: ********** 21 - 25: *********** 26 - 31: ******** 31 - 35: **** 36 - 41: ******* 41 - 45: ************ 46 - 50: *****************
你的现有代码和当前输出的问题主要集中在区间范围错误和输出格式混乱上,咱们只需要对现有代码做几处小修改就能解决:
修改后的代码
public static void graph (int[] arr) { // 调整循环起始与终止,匹配目标区间范围 for ( int i=1; i <= 46; i+=5) { // 用print代替println,避免区间提前换行 System.out.print(i+" - " + (i + 4) + ": "); for ( int num : arr) { if ( num >= i && num <= i + 4) System.out.print("*"); } // 打印空格分隔不同区间 System.out.print(" "); } // 最后添加换行,让输出更整洁 System.out.println(); }
关键修改说明
- 区间范围修正:把循环初始值从
0改成1,终止条件从i <= 50改成i <= 46,这样生成的区间正好是你需要的1-5、6-10……46-50,不会出现多余的0-4或50-54区间。 - 输出格式调整:将原来打印区间的
System.out.println换成System.out.print,保证区间和对应的星号在同一行;每个区间的星号打印完成后,添加一个空格来分隔不同区间,和你想要的格式对齐。 - 收尾优化:循环结束后加一行
System.out.println(),确保输出末尾有换行,避免后续内容和直方图连在一起。
如果你的目标里26-31、31-35这种非5步长的区间是特意需求,那可能需要单独处理这几个区间,但从你给出的代码逻辑来看,先按5步长修正已经能解决核心问题啦。
内容的提问来源于stack exchange,提问作者calvin jackson
相关产品推荐
相关产品推荐

