Это сводило меня с ума весь день. Я пытался заставить массивы перестать печатать запятую после последнего числа, напечатанного для этого массива. Я просто не могу заставить его работать должным образом. Любая помощь будет принята с благодарностью.

Это результат массивов:

[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("]");
   }
}
0
user7214683 27 Ноя 2016 в 03:18

2 ответа

Лучший ответ

Если вы хотите печатать запятую только после каждого элемента, который не является последним, вы хотите проверить его позицию , а не его значение :

if ( i < l-1 )
   System.out.print(arr[i] + ", ");
else
   System.out.print(arr[i]);
0
Scott Hunter 27 Ноя 2016 в 02:25

Для решения без цикла или проверки индексов вы можете использовать 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);
}
0
T.Gounelle 6 Дек 2016 в 16:00