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

Java中如何循环遍历函数传入的数组参数实现批量打印输出

问题描述

初始代码通过重复编写三次打印逻辑实现三个数组的输出,代码冗余度高:

public class Main {
    public static void main(String[] args) {

//   --------Declaring variables--------
        int arrLength = 6;
        String[] arr1 = new String[arrLength];
        String[] arr2 = new String[arrLength];
        String[] arr3 = new String[arrLength];
        
        joinArrays(arr1,arr2,arr3);
}

private static void joinArrays(String[] arr1, String[] arr2, String[] arr3){
        System.out.print("Array 1 : ");
        System.out.println(String.join(",",arr1));
        System.out.println("");

        System.out.print("Array 2 : ");
        System.out.println(String.join(",",arr2));
        System.out.println("");

        System.out.print("Array 3 : ");
        System.out.println(String.join(",",arr3));
        System.out.println("");

    }

尝试用循环消除重复逻辑时写出了错误实现,运行后仅输出:

Array 1 : arr1
Array 2 : arr2 

错误代码如下:

private static void joinArrays(String[] arr1, String[] arr2, String[] arr3){
        for(int i = 0; i<3;i++){
          System.out.print("Array "+i+" : ");
          System.out.println(String.join(",","arr"+i));
          System.out.println("");
   }
}

该写法的核心问题是:Java作为静态语言,不支持通过拼接字符串的方式动态访问对应名称的变量,"arr"+i只是普通字符串,和传入的数组参数没有任何关联,因此无法获取到数组实际内容。

实现方案

方案1:可变参数(最优,扩展性最强)

直接将方法参数改为可变参数类型,支持传入任意个数的String数组,无需硬编码参数数量,循环遍历即可完成打印:

private static void joinArrays(String[]... arrs){
    for(int i = 0; i < arrs.length; i++){
        System.out.printf("Array %d : ", i + 1);
        System.out.println(String.join(",", arrs[i]));
        System.out.println();
    }
}

调用方式和原有逻辑完全一致,直接传入arr1,arr2,arr3即可,后续如果需要增加打印arr4、arr5,不需要修改方法内部逻辑。

方案2:保留原有固定参数签名

如果不需要修改方法的入参定义,可以先把所有传入的数组装到一个可遍历的二维数组中,再循环处理:

private static void joinArrays(String[] arr1, String[] arr2, String[] arr3){
    String[][] allArrs = {arr1, arr2, arr3};
    for(int i = 0; i < allArrs.length; i++){
        System.out.printf("Array %d : ", i + 1);
        System.out.println(String.join(",", allArrs[i]));
        System.out.println();
    }
}

补充说明:当前代码中创建的String数组未做初始化赋值,数组元素默认值为null,直接拼接会输出字面量null,如果需要展示为空内容,可以提前给数组元素赋值,或在拼接前对null值做转换处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 18:06:33