2012-01-20 105 views
3

我有一個小的任務,我必須使用2d陣列來生成Pascal三角形。這是我的代碼,它的工作原理。還有,如果我顯示三角形,像這樣一個額外的信貸機會:Pascal三角形2d陣列 - 格式化打印輸出

pascal

然而,我的空間沒有被格式化那樣。它只是顯示左邊排列的所有數字。它很難描述,但如果你運行它,你會明白我的意思。

這裏是我的代碼:

import java.util.*; 

public class Pascal { 
public static final int ROW = 16; 

public static void main(String[] args) { 
     int[][] pascal = new int[ROW +1][]; 
    pascal[1] = new int[1 + 2]; 
    pascal[1][1] = 1; 
    for (int i = 2; i <= ROW; i++) { 
     pascal[i] = new int[i + 2]; 
     for (int j = 1; j < pascal[i].length - 1; j++) { 
      pascal[i][j] = pascal[i-1][j-1] + pascal[i-1][j]; 
      } 
    } 
    for (int i = 1; i <= ROW; i++) { 
     for (int j = 1; j < pascal[i].length - 1; j++) { 
      System.out.print(pascal[i][j] + " "); 
     } 
     System.out.println(); 
    } 
} 
} 

如果有人可以幫助我弄清楚如何正確的間距添加到我的程序產生的圖像所需的輸出,這將是巨大的:)我知道我需要把系統打印出來「」某處,我只是不知道在哪裏。謝謝!

+0

http://stackoverflow.com/questions/2709993/how-to-center-string-output-using-printf-and-variable-width-java –

+1

'Pascal',你在你的選擇標籤是指編程語言,而不是「帕斯卡三角形」。我刪除了它,因爲它不適合所問的問題。 :) –

回答

3

在這裏,我修改了你的代碼,它將ROW的大小打印到13,因爲我的控制檯窗口的限制。

import java.util.*; 

public class Pascal { 
    public static final int ROW = 12; 
    private static int max = 0; 

    public static void main(String[] args) { 
     int[][] pascal = new int[ROW +1][]; 
     pascal[1] = new int[1 + 2]; 
     pascal[1][1] = 1; 
     for (int i = 2; i <= ROW; i++) { 
      pascal[i] = new int[i + 2]; 
      for (int j = 1; j < pascal[i].length - 1; j++) { 
       pascal[i][j] = pascal[i-1][j-1] + pascal[i-1][j]; 
       String str = Integer.toString(pascal[i][j]); 
       int len = str.length(); 
       if (len > max) 
        max = len; 
      } 
     } 


     for (int i = 1; i <= ROW; i++) {     
      for (int k = ROW; k > i; k--) 
       System.out.format("%-" + max + "s", " "); 
      for (int j = 1; j < pascal[i].length - 1; j++)      
       System.out.format("%-" + (max + max) + "s", pascal[i][j]); 
      System.out.println(); 
     } 
    } 
} 

希望這可能有幫助。

問候

3

您遇到間距問題,因爲您需要將空格添加到特定數字以適應更大數量佔用的空間。首先確定您計劃打印的最大數量是多少(以編程方式)。然後確定該號碼log(n)中的位數。然後,您可以使用此號碼打印空白,以便數字少於您的最大數字,以使您的打印效果更好。