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

Java实现返回n位最大数字功能运行结果不符合预期求助

问题根因

  • 核心逻辑错误:你当前的实现直接将输入的整数n转为字符串返回,和需求完全不符。比如输入n=2时你的代码返回"2",但需求要求返回2位的最大数字"99"。
  • 语法错误:你贴出的代码中Result类提前闭合,后续的main方法写在了类外面,会直接编译失败。

正确实现思路

  1. 边界处理:如果输入的n等于0,直接返回"-1"
  2. 非零场景:先取n的绝对值适配约束0 ≤ |n| ≤10,生成一个长度等于|n|、每一位都是字符'9'的字符串即可,该字符串恰好是对应位数的最大数字。

修正后完整代码

import java.io.*;

class Result {
    /*
     * Complete the 'largestNumber' function below.
     *
     * The function is expected to return a STRING.
     * The function accepts INTEGER n as parameter.
     */
    public static String largestNumber(int n) {
        if (n == 0) {
            return "-1";
        }
        // 取绝对值适配约束
        int len = Math.abs(n);
        // 生成len个9组成的字符串
        return "9".repeat(len);
    }
}

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
        int n = Integer.parseInt(bufferedReader.readLine().trim());
        String result = Result.largestNumber(n);
        bufferedWriter.write(result);
        bufferedWriter.newLine();
        bufferedReader.close();
        bufferedWriter.close();
    }
}

低版本Java兼容写法(如果不支持String.repeat方法)

public static String largestNumber(int n) {
    if (n == 0) {
        return "-1";
    }
    int len = Math.abs(n);
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < len; i++) {
        sb.append("9");
    }
    return sb.toString();
}

用例验证

  • 输入n=1 → 输出"9",符合预期
  • 输入n=2 → 输出"99",符合预期
  • 输入n=0 → 输出"-1",符合预期
  • 输入n=-3 → 输出"999",符合|n|=3的约束要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:45:06