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

Java冰雹序列程序输出格式问题求助:无法通过校验

解决冰雹序列输出格式问题

问题根源分析

你的代码存在两个核心格式问题:

  1. 每个数字后都强制追加制表符\t,包括序列的最后一个元素1,导致末尾出现多余空白字符。
  2. 换行逻辑时机错误,且循环结束后未确保最后一行末尾有换行,不符合题目输出要求。

解决思路

  1. 避免末尾多余制表符:不要在每个数字后直接拼接\t,而是判断当前数字是否为该行的第一个元素——若非行首,先输出\t再输出数字;或者收集每行元素后用制表符连接输出整行。
  2. 调整换行时机:每输出10个数字后立即换行,确保每行恰好10个元素(最后一行除外)。
  3. 保证末尾换行:循环结束后强制输出换行,确保输出内容的完整性。

修改后的代码

import java.util.Scanner;

public class HailstoneSequence {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        int n = scnr.nextInt();
        scnr.close();

        int count = 0;
        while (true) {
            // 非行首且未到该行第10个元素时,先输出制表符
            if (count > 0 && count % 10 != 0) {
                System.out.print("\t");
            }
            // 输出当前冰雹数
            System.out.print(n);
            count++;

            // 到达1时终止循环
            if (n == 1) {
                break;
            }

            // 生成下一个冰雹数
            n = n % 2 == 0 ? n / 2 : 3 * n + 1;

            // 每输出10个数字换行
            if (count % 10 == 0) {
                System.out.println();
            }
        }
        // 确保最后一行末尾有换行
        System.out.println();
    }
}

关键改动说明

  • 补充了Java程序必需的类定义(原代码缺失类包裹,无法编译运行)。
  • 调整输出逻辑:先判断是否需要输出制表符,再输出数字,彻底避免末尾多余空白。
  • 使用println()实现换行,比print("\n")更符合Java编码规范。
  • 循环结束后强制输出换行,保证输出格式与示例一致。
  • 关闭Scanner资源,避免不必要的资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:46:04