Java实现返回n位最大数字功能运行结果不符合预期求助
问题根因
- 核心逻辑错误:你当前的实现直接将输入的整数
n转为字符串返回,和需求完全不符。比如输入n=2时你的代码返回"2",但需求要求返回2位的最大数字"99"。 - 语法错误:你贴出的代码中
Result类提前闭合,后续的main方法写在了类外面,会直接编译失败。
正确实现思路
- 边界处理:如果输入的
n等于0,直接返回"-1" - 非零场景:先取
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
相关产品推荐
相关产品推荐

