2017-06-19 98 views
1

所以我被問到這個問題,我只能解決代碼的頂部,我被困在底部。空心鑽石形狀與數字在java

編寫一個名爲EmptyDiamond.java的Java程序,其中包含一個方法,該方法需要一個整數N,並在2N-1行上打印一個空的菱形,如下所示。
樣本輸出當n = 3

1 
    2 2 
3 3 
    2 2 
    1 

這裏是我到目前爲止的代碼:

public static void shape(int n){ 


//TOP PART 


     for(int i=1; i<=(n-1) ; i++){ 
      System.out.print(" "); 
     } 
     System.out.println(1); 

     for(int i=2; i<=n; i++){ 
      for(int j=1; j<=(n-i); j++){ 
       System.out.print(" "); 
      } 
      System.out.print(i); 

      for(int j=1; j<=2*i-n+1; j++){ 
       System.out.print(" "); 
      } 
      System.out.println(i); 
     } 

//BOTTOM PART(The messed up part) 

     for(int i=n+1; i<=2*n-2; i++){ 

      for(int j=1; j<=n-i; j++){ 
       System.out.print(" "); 
      } 
      System.out.print(i); 

      for(int j=1; j<=n; j++){ 
       System.out.print(" "); 
      } 


      System.out.print(i); 
     } 
     for(int i=1; i<=(n-1) ; i++){ 
      System.out.print(" "); 
     } 
     System.out.println(1); 
    } 
    public static void main(String[]args){ 
     shape(4); 
    } 
+1

提示:'i <=(n-1)'更傳統,簡潔地表述爲'i shmosel

回答

0

這裏是打印空金剛石程序:

int n = 3; //change the value of n to increase the size of diamond 
int upperCount = 1; 
for(int i=n; i>=1; i--){ 

    for(int j=i; j>=1; j--){ 
     System.out.print(" "); 
    } 
    System.out.print(upperCount); 

    for(int j=0; j<=upperCount-2; j++){ 
     System.out.print(" "); 
    } 

    for(int j=0; j<=upperCount-2; j++){ 
     System.out.print(" "); 
    } 

    if(upperCount!=1){ 
     System.out.print(upperCount); 
    } 

    upperCount++; 
    System.out.print("\n"); 
} 

int lowerCount = n-1; 
for(int i=1; i<=n-1; i++){ 

    for(int j=0; j<=i; j++){ 
     System.out.print(" "); 
    } 
    System.out.print(lowerCount); 

    for(int j=0; j<=lowerCount-2; j++){ 
     System.out.print(" "); 
    } 

    for(int j=0; j<=lowerCount-2; j++){ 
     System.out.print(" "); 
    } 

    if(lowerCount!=1){ 
     System.out.print(lowerCount); 
    } 

    lowerCount--; 
    System.out.print("\n"); 
} 

做以下的變化底部部分代碼:

int lowerCount = n-1; 
for(int i=n-1; i>=2; i--){ 
    for(int j=1; j<=(n-i); j++){ 
     System.out.print(" "); 
    } 
    System.out.print(i); 

    for(int j=1; j<=lowerCount; j++){ 
     System.out.print(" "); 
    } 
    System.out.print(i); 
    lowerCount-=2; 
} 
+0

它不適合我。對不起,我沒有指定它,但我不允許使用「if」和「while」。 – Gandalf

+0

@Gandalf我已經對現有代碼的底部做了一些更改,現在它會給你想要的結果。 –