печатать пробел вместо нуля для массива 2D int в java

Я пытаюсь напечатать треугольник Паскаля, используя массив 2D int

И печать 2D-массива ниже

public static void pascal (int n)
     { 
        int[][] pascalArray = new int[n][n];

        // Code here

        }

        printArray(pascalArray);

    public static void printArray(int[][] array)
     {
         for (int i = 0; i < array.length; i++)
         {
             for(int j=0; j<array[i].length;j++)
             {
                 System.out.print(array[i][j] + " ");
             }
             System.out.println();
         } 

Для n =4

Я получаю ниже вывода

Enter rows in the Pascal's triangle (or 0 to quit): 4
1 0 0 0 
1 1 0 0 
1 2 1 0 
1 3 3 1 

Теперь мне нужен пробел вместо нуля или формат равнобедренного треугольника для красивой печати.

Возможно ли это для 2D-массива int или мы можем изменить 2D-массив int на некоторый строковый массив в методе printArray и добиться того же?

Я попробовал system.out.format, но почему-то не могу получить результат из-за массива int 2D


person Community    schedule 16.09.2015    source источник
comment
Вы могли бы просто иметь проверку в своем цикле, которая проверяет, является ли это нулем, и если это так, напечатайте пробел вместо 0.   -  person Evan LaHurd    schedule 17.09.2015
comment
@EvanLaHurd я пробовал, если (array[i][j]==0) array[i][j]= ' '; Но массив представляет собой int 2D, и он не может назначить пробелы, я также пробовал unicode, но все еще не показывает, как я хочу.   -  person    schedule 17.09.2015
comment
Не назначайте пробел array[i][j], просто используйте System.out.print(" ");   -  person Evan LaHurd    schedule 17.09.2015
comment
Спасибо за вклад ... но как-то я получаю java.lang.ArrayIndexOutOfBoundsException для этого !!!   -  person    schedule 17.09.2015
comment
Тогда вы делаете что-то не так... если вы только добавляете проверку на 0 и печатаете пробел вместо 0, то этого не должно быть, если это уже не так. В любом случае, ответ Энди — ваш лучший выбор!   -  person Evan LaHurd    schedule 17.09.2015


Ответы (2)


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

     for (int i = 0; i < array.length; i++)
     {
         for(int j=0; j<=i; j++)
         {
             System.out.print(array[i][j] + " ");
         }
         System.out.println();
     } 
person Andy Thomas    schedule 16.09.2015
comment
О, да!!!! Я так не думал... спасибо за информацию, чувак... Кажется, я сделал здесь ошибку новичка. - person ; 17.09.2015

Вы можете просто добавить инструкцию, которую я добавил ниже. Он печатается только в том случае, если значение в массиве не равно «0». Если это массив строк, используйте метод equals()

 for (int i = 0; i < array.length; i++)
 {
     for(int j=0; j<array[i].length;j++)
     {
         if (array[i][j] != 0) System.out.print(array[i][j] + " ");
     }
     System.out.println();
 } 
person Yassin Hajaj    schedule 16.09.2015