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

多类型数组(string、double、int)负数转正数实现方案问询

处理不同类型数组中的负数转正数方案

核心思路

针对int、double、String三种类型的数组,利用对应类型的Math.abs重载方法(String类型需先解析为数字),通过循环遍历原地替换原数组中的负数为正数。通过重载相同名称的方法,实现统一调用的“通用”效果,避免重复编写循环逻辑。

具体实现代码

处理int类型数组

直接遍历数组,调用Math.abs(int)获取绝对值替换原元素:

public static void convertNegativeToPositive(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        arr[i] = Math.abs(arr[i]);
    }
}

处理double类型数组

使用Math.abs(double)重载方法处理:

public static void convertNegativeToPositive(double[] arr) {
    for (int i = 0; i < arr.length; i++) {
        arr[i] = Math.abs(arr[i]);
    }
}

处理String类型数组

先将字符串解析为double(兼容整数和小数格式),取绝对值后转回字符串:

public static void convertNegativeToPositive(String[] arr) {
    for (int i = 0; i < arr.length; i++) {
        try {
            double num = Double.parseDouble(arr[i]);
            arr[i] = String.valueOf(Math.abs(num));
        } catch (NumberFormatException e) {
            // 可根据需求调整:保留原字符串、抛出异常或打印日志
            System.err.println("无效数字字符串: " + arr[i]);
        }
    }
}

调用示例

import java.util.Arrays;

public class ArrayAbsConverter {
    public static void main(String[] args) {
        int[] intArr = {-1, 2, -3, 4};
        double[] doubleArr = {-1.5, 2.7, -3.0};
        String[] strArr = {"-123", "45.6", "-78"};

        convertNegativeToPositive(intArr);
        convertNegativeToPositive(doubleArr);
        convertNegativeToPositive(strArr);

        // 验证结果
        System.out.println(Arrays.toString(intArr));      // 输出: [1, 2, 3, 4]
        System.out.println(Arrays.toString(doubleArr));   // 输出: [1.5, 2.7, 3.0]
        System.out.println(Arrays.toString(strArr));      // 输出: [123, 45.6, 78]
    }

    // 上述三个convertNegativeToPositive方法放在此处
}

关键说明

  • 重载方法比泛型更适合这个场景:Java泛型对基本类型数组支持有限,重载方法类型安全且实现简单,调用时无需额外类型转换。
  • 原地修改原数组:无需创建新数组,节省内存开销。
  • String类型的异常处理:避免因非数字字符串导致程序崩溃,可根据业务需求调整逻辑(如跳过无效元素或抛出自定义异常)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:37:12