You need to enable JavaScript to run this app. Java实现字符串内数字平方后替换原数字的功能开发求助
优惠活动
大模型
产品
解决方案
定价
更多

Java实现字符串内数字平方后替换原数字的功能开发求助

当前代码的核心问题

你写的逻辑距离可运行的正确实现差两个核心环节:

  • 循环内仅把计算出的平方值打印到控制台,没有统一的内容收集容器,方法最终直接返回空字符串,既没有留存原字符串里的非数字字符,也没有把计算后的平方值纳入返回内容
  • 固定长度char[]的替换思路不兼容多位数的平方结果:比如数字9平方后是81,占2个字符长度,没法直接替换原数组里单个字符的位置,长度完全不匹配
实现方案(适配初学者理解成本)

用Java自带的可变字符串类StringBuilder做结果收集,逻辑无复杂技巧:

  1. 初始化空的StringBuilder实例,全程用它拼接最终要返回的内容
  2. 遍历原字符串的每一个字符,按类型分别处理:
    • 遇到非数字字符:直接把字符追加到StringBuilder末尾
    • 遇到数字字符:先算出对应的数值(不需要把char转成字符串再解析为int,数字字符的ASCII值是连续的,字符减去'0'的偏移量就能直接得到对应的整数),计算平方后,把平方值直接追加到StringBuilder中(类本身会自动把整数转成对应格式的字符串)
  3. 遍历完成后把StringBuilder的内容转成普通String返回即可
修改后可直接运行的完整代码
public class Code {
    public static void main(String[] args) {
        // 要求的测试场景1
        System.out.println(squareDigits("a22b")); // 输出a44b
        // 要求的测试场景2
        System.out.println(squareDigits("a9b2")); // 输出a81b4
        // 原有测试用例
        String ok = "a2b9";
        System.out.println(squareDigits(ok)); // 输出a81b4
    }

    public static String squareDigits(String s) {
        // 初始化可变字符串容器,收集最终结果
        StringBuilder result = new StringBuilder();
        // 遍历原字符串的每一个字符
        for (char c : s.toCharArray()) {
            if (Character.isDigit(c)) {
                // 字符转对应整数:利用数字字符ASCII连续的特性,减'0'直接得到数值
                int num = c - '0';
                // 计算平方,直接追加到结果中
                result.append(num * num);
            } else {
                // 非数字字符直接追加
                result.append(c);
            }
        }
        // 转成普通字符串返回
        return result.toString();
    }
}
运行效果校验

对照要求的场景逐行走逻辑即可确认正确性:

  • 输入a22b:依次追加a → 第一个2的平方值4 → 第二个2的平方值4 → b,最终输出a44b
  • 输入a9b2:依次追加a → 9的平方值81 → b → 2的平方值4,最终输出a81b4
    完全匹配预期运行效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 04:36:05