2012-01-20 6 views
3

파스칼의 삼각형을 생성하기 위해 2 차원 배열을 사용해야하는 작은 할당이 있습니다. 여기 내 코드가 있으며 작동합니다. 파스칼의 삼각형 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

코드를 수정 했으므로, 내 콘솔 창의 제한 사항 인 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)의 자릿수를 결정하십시오. 그런 다음이 번호를 사용하여 가장 큰 숫자보다 작은 자릿수의 공백을 인쇄하여 인쇄 품질을 향상시킬 수 있습니다.