繁体   English   中英

我如何循环通过java中的函数传递的参数变量

[英]How can i loop through parameter variables passed by function in 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 方法的参数。

如果您想防止重复自己,那么您可以将代码放在一个单独的方法中,并使用参数变量一次调用一个:

private static void joinArrays(String[] arr1, String[] arr2, String[] arr3) {
    joinArray("Array 1 : ", arr1);
    joinArray("Array 2 : ", arr2);
    joinArray("Array 3 : ", arr3);
}

private static void joinArray(String label, String[] arr) {
    System.out.print(label);
    System.out.println(String.join(",", arr));
    System.out.println("");
}

方法的参数是 VarArgs 的另一种方法。 可以将任意数量的数组(在合理范围内)传递给该方法。 这与将命令行参数传递给应用程序的main()方法的方式非常相似,只是这里提供的 VarArgs 的每个元素都以逗号 (,) 分隔。 一个典型的方法调用是:

joinArrays(arr1, arr2, arr3, arr4, arr5, and so on);

如果您愿意,您可以在单个 2D 数组中传递所有数组,因为 2D 数组是数组数组。 这方面的一个例子是:

String[][] array2D = new String[3][];
int arrLength = 6;

String[] arr1 = new String[arrLength];
String[] arr2 = new String[arrLength];
String[] arr3 = new String[arrLength];
 
array2D[0] = arr1;
array2D[1] = arr2;
array2D[2] = arr3;

joinArrays(array2D);

控制台窗口的最终结果将完全相同,即:

Array 1: 
null, null, null, null, null, null

Array 2: 
null, null, null, null, null, null

Array 3: 
null, null, null, null, null, null

当然,所有数组中的元素都将为空,因为在将它们传递给此方法之前,这些数组中从未有任何内容。

这是方法。 阅读代码中的注释。 如果您删除方法中的注释,您会发现它实际上只有三行代码:

private static void joinArrays(String[]... arrays) {
    /* Declare a variable and initialize it to hold 
       the System's Line Separator character sequence. */
    String ls = System.lineSeparator();
    
    /* Iterate through all supplied arrays however 
       many there are...it doesn't matter).   */
    for (int i = 0; i < arrays.length; i++) {
        
        /* Join the elements of the current array being 
           processed and print the result of the Joining. */
        System.out.print("Array " + (i+1) + ": " + ls 
                       + String.join(", ",arrays[i]) + ls + ls);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM