Java按条件输出数字每行5个时出现多余空行问题求解
问题原因
你定位的诱因完全准确,核心bug是换行判断的执行逻辑错误:
- 原代码中换行判断
if (count%5==0)和有效数字筛选判断是平级关系,每次for循环迭代都会执行,和本次循环是否打印了符合要求的数字无关。 - 当count累计到5之后,后续遍历到不符合筛选规则的数字时,count值不会变化,
count%5==0的条件会持续命中,每遍历一个无效数字就会多打印一次换行,最终产生大量多余空行。 - 额外小问题:原代码在每个数字后固定拼接空格,最后一行末尾会残留多余空格,不符合规整输出要求。
修正方案
将换行判断逻辑移动到有效数字打印的代码块内部,仅在成功打印一个符合要求的数字后,再判断是否需要换行;同时调整空格打印逻辑,避免行尾残留多余空格。
修正后的可运行代码如下:
public class Main { public static void main(String[] args) { int n = 10, m = 50, a = 2, b = 3; int count = 0; for (int i = n; i <= m; i++) { if (i % a == 0 && i % b != 0) { System.out.print(i); count++; if (count % 5 == 0) { // 凑够5个数字,打印换行 System.out.println(); } else { // 未凑够5个,打印空格分隔下一个数字 System.out.print(" "); } } } // 最后一行不足5个数字时,补末尾换行保证格式规整 if (count % 5 != 0) { System.out.println(); } } }
运行上述代码可以完全匹配预期输出,不会产生多余空行,也没有行尾多余空格。
内容的提问来源于stack exchange,提问作者Imminentpulse
相关产品推荐
相关产品推荐

