2017-06-19 97 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我已经对现有代码的底部做了一些更改,现在它会给你想要的结果。 –