2012-01-20 99 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)中的位数。然后,您可以使用此号码打印空白,以便数字少于您的最大数字,以使您的打印效果更好。