2015-12-05 2 views
1

J'ai donc besoin de faire un losange de nombres en utilisant un tableau 2D en Java. J'ai eu mes résultats mais avec null avant le diamant. Pour drawNumDiamond(9) je dois obtenir un look de diamant qui va jusqu'à 5 et revenir. Je sais que je peux le faire sans utiliser tableau, mais je veux en savoir plus sur les tableaux 2D: this is how it should look like and what are my resultsdessin Diamant de nombres avec un tableau 2D en 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); 
 

 
    } 
 
    }

Répondre

0

La question est dans cette ligne:

dijamant[row][kolona] += count; 

si dijamant[row][kolona] est null et count est 2, le résultat de la concaténation de chaîne sera "null2". Essayez d'ajouter la déclaration if suivante avant d'initialiser avec une chaîne vide:

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

Cela obtenir votre code de travail, mais il y a encore des choses à penser. Par exemple. vous gardez le réglage dijamant[0][0] = "1"; dans la boucle.

+0

merci ça marche maintenant :) –