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

Java游程编码实现:数字频次按nxw.格式输出问题

修正你的行程编码Java代码

我发现你的代码目前只输出了最后一组连续数字的统计结果,而且初始值的处理也有问题,没法正确处理所有输入情况。咱们一步步来修正:

原代码的核心问题

  • 仅在循环结束后输出一次结果,中间遇到不同数字时没有输出之前统计好的连续组,导致丢失了前面所有的结果
  • 初始oldNum = 0的设定不合理,如果输入的第一个数字不是0,会触发错误的分支逻辑
  • 对first标记的处理逻辑混乱,没有正确初始化第一组数字的统计

修正后的代码

import java.util.Scanner;

public class LaufLaengenKodierung {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 先判断是否有输入,避免空输入导致错误
        if (!sc.hasNextInt()) {
            sc.close();
            return;
        }

        int freq = 1;
        int oldNum = sc.nextInt();
        int currentNum;

        while (sc.hasNextInt()) {
            currentNum = sc.nextInt();
            if (currentNum == oldNum) {
                // 连续相同数字,频次加1
                freq++;
            } else {
                // 遇到不同数字,先输出之前的组
                System.out.print(freq + "x" + oldNum + ".");
                // 重置统计当前新数字
                freq = 1;
                oldNum = currentNum;
            }
        }
        // 循环结束后,输出最后一组的结果
        System.out.print(freq + "x" + oldNum + ".");
        sc.close();
    }
}

代码说明

  1. 初始输入判断:先检查是否有输入数字,避免空输入时出现异常
  2. 第一组数字初始化:直接读取第一个数字作为初始的oldNum,频次设为1,逻辑更清晰
  3. 循环处理逻辑:
    • 每次读取当前数字,和上一个数字比较
    • 相同则频次加1
    • 不同则先输出上一组的统计结果,再重置频次和上一个数字
  4. 最后一组输出:循环结束后,必须输出最后一组连续数字的结果,因为循环里只在遇到不同数字时输出前面的组

测试示例

  • 输入:1 1 1,输出:3x1.
  • 输入两行:
    1 1 1
    7 7 1 1 0
    
    输出:3x1.2x7.2x1.1x0.,完全符合你的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:18:12