2016-07-16 245 views
1

我想打印中心對齊的三角形以及顛倒的三角形。輸出應該是這個。在java中打印一箇中心對齊的三角形以及顛倒的三角形

  1 
      121 
     12321 
     1234321 
     123454321 
     1234321 
     12321 
      121 
      1 

雖然它的正確顯示有數字和三角形的上半部正確居中對齊,其未示出在中心alignment.Below三角形的下半部分是我的代碼。

public class Pro1point1 
{ 
    public static void main(String[] args){ 
    int i,j,k,l,space=29; 
    for(i=1;i<=5;i++){ 
    //First print the upper half triangle. 
    for(j=1;j<=space;j++){ 
     System.out.print(" "); 
    } 
    for(k=1;k<=i;k++){ 
     System.out.print(k); 
    } 
    for(l=i-1;l>=1;l--){ 
     System.out.print(l); 
    } 
    space--; 
    System.out.println(); 
    } 
    //Now Print the lower half triangle. 

    space=29; 
    for(i=4;i>=1;i--){ 
    for(j=space;j>=1;j--){ 
    System.out.print(""); 
    } 
    for(k=1;k<=i;k++){ 
    System.out.print(k); 
    } 
    for(l=i-1;l>=1;l--){ 
    System.out.print(l); 
    } 
    space++; 
    System.out.println(); 
    } 
} 
} 

它顯示了我這樣。

My Output is like this

回答

2

更換它有一個在第二個for循環錯字,您必須使用:

System.out.print(" "); 

代替

System.out.print(""); 

更新:

您可以通過使用System.out.print("X") 「調試」 這片神奇的偏移量和space較低的值。看看每行上打印多少個X

中間線後會發生什麼? 將space=29;替換爲space+=2;會發生什麼情況?

+0

非常感謝。它的工作現在。有點迷惑爲什麼我們需要空間= 26?你能解釋我嗎? –

+0

我已經更新了我的答案.. – sinclair

0

的問題是在這條線System.out.print("");

請注意,您打印空字符串代替空格字符

System.out.print(" ");

+0

哦是的。正確。但它仍然顯示稍低一半的三角形從中心對齊。 –