停止在每个数组末尾打印出额外的逗号和空格

时间:2016-11-27 00:18:31

标签: java arrays multidimensional-array

这一直让我疯狂。我一直试图让阵列在为该阵列打印的最后一个数字后停止打印逗号。我似乎无法让它正常工作。任何帮助都将非常感激。

这是数组的输出:

  

[5,6,7,8],

     

[[2,4,6,8,] [8,7,9,1,] [35,1,2,]]

     

[[12,] [3,4,5,] [6,] [7,8,9,]]

我想要的输出:

  

[5,6,7,8]

     

[[2,4,6,8] [8,7,9,1] [3,5,1,2]]

     

[[1,2] [3,4,5] [6] [7,8,9]]

public class ArrayPrinter {

public static void main(String[] args) {
    int[] oneD = {5 ,6 ,7 ,8};

    int[][] twoD = {{2, 4, 6, 8}, {8, 7, 9, 1}, {3, 5, 1, 2}}; 

    int[][] twoD2 = {{1, 2}, {3, 4, 5}, {6}, {7, 8, 9}};

    printArray(oneD);
    printArray(twoD);
    printArray(twoD2);

}

public static void printArray(int[] arr) 
{
   int l = arr.length;
    System.out.print("[");
    for (int i = 0; i < l; i++) 
    {
        if (arr [i] == l-1)
            System.out.print(arr[i]);

       else
            System.out.print(arr[i] + ", ");
    }

    System.out.println("]");

}

public static void printArray(int[] [] arr) 
{

    int l = arr.length;
    System.out.println("[");
       for (int i=0; i < l; i++) 
        printArray(arr[i]);
    System.out.println("]");
   }
}

2 个答案:

答案 0 :(得分:0)

如果您只想在不是最后一个元素之后打印逗号,则需要检查其位置,而不是

if ( i < l-1 )
   System.out.print(arr[i] + ", ");
else
   System.out.print(arr[i]);

答案 1 :(得分:0)

对于没有循环或检查索引的解决方案,您可以使用完全符合1D数组要求的Arrays.toString方法:

public static void printArray(int[] array) {
    System.out.println(Arrays.toString(array));
}

对于2D数组,您可以使用java 8流与前一种方法结合使用:

public static void printArray(int[][] array) {
    String arr2d = Arrays.stream(array)             // build a stream of int[]
        .map(x -> Arrays.toString(x))               // format each int[] into a pretty string
        .collect(Collectors.joining("", "[", "]")); // format the 2d array
    System.out.println(arr2d);
}