2015-12-05 21 views
1

所以我需要使用Java中的二维数组做一个diamond_look数字。我得到了我的结果,但在钻石前没有空。对于drawNumDiamond(9)我必须得到直到5回来的钻石外观。我知道我能做到不使用数组,但我想更多地了解二维数组:this is how it should look like and what are my resultsdrawing在java中使用二维数组的钻石数字

public class Example1{ 
 
    \t private static void drawNumDiamond(int h) { 
 

 
     if(h%2 != 0) { 
 
      int size = h/2 +1; 
 
      int count = 1; 
 
      int loop = 1; 
 
      String[][] dijamant = new String[h][]; 
 
      for(int row = 0; row < dijamant.length; row++) { 
 

 
       dijamant[row] = new String[row+1]; 
 

 
       for(int kolona=0; kolona<=row; kolona++) { 
 

 
        dijamant[0][0] = "1"; 
 

 
        for(int i=0; i< loop;i++) { 
 

 
         dijamant[row][kolona]+= count; 
 

 
        } 
 

 
       } 
 
       count++; 
 
       loop+=2; 
 

 
      } 
 

 
      for (int k = 0; k < size; k++) { 
 
       System.out.printf("%" + h + "s", dijamant[k]); 
 
       h++; 
 
       System.out.println(); 
 
      } 
 
      h--; 
 
      for (int q = size - 2; q>=0; q--) { 
 
       h--; 
 
       System.out.printf("%" + h + "s", dijamant[q]); 
 
       System.out.println(); 
 
      } 
 

 
     } 
 
    } 
 
    public static void main(String[] args) { 
 

 
      drawNumDiamond(9); 
 

 
    } 
 
    }

回答

0

的问题是在这条线:

dijamant[row][kolona] += count; 

如果dijamant[row][kolona]nullcount是2,字符串连接的结果将是"null2"。尝试添加以下if语句之前用一个空字符串初始化:

if (dijamant[row][kolona] == null) { 
    dijamant[row][kolona] = ""; 
} 

这将让你的代码的工作,但还是有事情要思考的问题。例如。你在循环中继续设置dijamant[0][0] = "1";

+0

谢谢你现在的作品:) –