2017-04-08 5 views
0

このダイヤモンドを最大3つのステートメントで描画するメソッドを作成する必要があります。私はこれを作ることができます例えば "*"しかし、私はどのように私はこれを作るためにchar配列を使用する必要があります私はループのためだけに3を使用してすべての行を新しい文字を追加すると思いますか?事前のおかげで別の文字を使ったfor文を使用したJavaのダイヤモンド

A 
    BBB 
    CCCCC 
DDDDDDD 
EEEEEEEEE 
DDDDDDD 
    CCCCC 
    BBB 
    A 

これは私がこれまでに何ができるかです:

static void diamond() { 
    int n= 9; 
    int a=5; 
    int c=1; 
    int d=0; 

    for(int i= 0; i<= n/2; i++){ 
     for(int j= 1; j<a; j++){ 

       System.out.print(" "); 
     } 
     for(int k=1; k<c; k++){ 
      System.out.print("*"); 
     } 

     for(int m= 0; m<=d; m++){ 
      System.out.print("*"); 
     } 

     c++; 
     d++; 

     a--; 
     System.out.println(); 
    } 
    int b=1; 
    int y=3 ; 
    int z= 2; 


    for(int i= 0; i<n/2+1; i++){ 
     for(int j=0; j<b; j++){ 
      System.out.print(" "); 
     } 
     for(int k= 0; k<=y; k++){ 
      System.out.print("*"); 
     } 

     for(int l= 0; l<= z; l++){ 
      System.out.print("*"); 
     } 
     System.out.println(); 
     z--; 
     b++; 
     y--; 
    } 

} 

出力を

* 
    *** 
    ***** 
******* 
********* 
******* 
    ***** 
    *** 
    * 
+0

のchar []、 –

+4

:)あなたの問題をしてください改善するあなたは、出力が本当に固定されている場合、あなたはわずか数文字列リテラルを印刷することができ – funcoding

+0

をやっていることを示します: ) – 9000

答えて

0

ループのために3つを得ました。

public static String generatDiamond(int n) { 
    String diamond = ""; 

    String spaces = ""; // used to store spaces 
    String str = ""; // string to be printed every line 
    char c = 'A'; 

    for (int i = n; i >= -n; i--) { 
     // there needs to be |i| spaces, and the char needs to be printed 2 * (n - |i|) + 1 times. 


     // generate spaces 
     for (int j = 1; j <= Math.abs(i); j ++) { 
      spaces += " "; 
     } 
     // add first spaces 
     str += spaces; 

     // add chars 
     for (int j = 1; j <= 2* (n - Math.abs(i)) + 1; j ++) { 
      str += c; 
     } 
     // add last spaces 
     str += spaces; 

     // add the line to the general shape 
     diamond += str + "\n"; 

     // clear variable 
     str = ""; spaces = ""; 

     // change the char 
     if (i > 0) 
      c++; 
     else 
      c--; 
    } 

    // shape is done, return it 
    return diamond; 
} 

public static void main(String[] args){ 
    // testing sizes 0 to 10 
    for (int i = 0; i <= 10; i++) { 
     System.out.println("n = " + i); 
     System.out.println(generatDiamond(i)); 
    } 

} 

出力例:

n = 0 
A 

n = 1 
A 
BBB 
A 

n = 2 
    A 
BBB 
CCCCC 
BBB 
    A 

n = 3 
    A 
    BBB 
CCCCC 
DDDDDDD 
CCCCC 
    BBB 
    A 

n = 4 
    A  
    BBB 
    CCCCC 
DDDDDDD 
EEEEEEEEE 
DDDDDDD 
    CCCCC 
    BBB 
    A  

n = 5 
    A  
    BBB  
    CCCCC 
    DDDDDDD 
EEEEEEEEE 
FFFFFFFFFFF 
EEEEEEEEE 
    DDDDDDD 
    CCCCC 
    BBB  
    A  

n = 6 
     A  
    BBB  
    CCCCC  
    DDDDDDD 
    EEEEEEEEE 
FFFFFFFFFFF 
GGGGGGGGGGGGG 
FFFFFFFFFFF 
    EEEEEEEEE 
    DDDDDDD 
    CCCCC  
    BBB  
     A  

n = 7 
     A  
     BBB  
    CCCCC  
    DDDDDDD  
    EEEEEEEEE 
    FFFFFFFFFFF 
GGGGGGGGGGGGG 
HHHHHHHHHHHHHHH 
GGGGGGGGGGGGG 
    FFFFFFFFFFF 
    EEEEEEEEE 
    DDDDDDD  
    CCCCC  
     BBB  
     A  

n = 8 
     A   
     BBB  
     CCCCC  
    DDDDDDD  
    EEEEEEEEE  
    FFFFFFFFFFF 
    GGGGGGGGGGGGG 
HHHHHHHHHHHHHHH 
IIIIIIIIIIIIIIIII 
HHHHHHHHHHHHHHH 
    GGGGGGGGGGGGG 
    FFFFFFFFFFF 
    EEEEEEEEE  
    DDDDDDD  
     CCCCC  
     BBB  
     A   

n = 9 
     A   
     BBB   
     CCCCC  
     DDDDDDD  
    EEEEEEEEE  
    FFFFFFFFFFF  
    GGGGGGGGGGGGG 
    HHHHHHHHHHHHHHH 
IIIIIIIIIIIIIIIII 
JJJJJJJJJJJJJJJJJJJ 
IIIIIIIIIIIIIIIII 
    HHHHHHHHHHHHHHH 
    GGGGGGGGGGGGG 
    FFFFFFFFFFF  
    EEEEEEEEE  
     DDDDDDD  
     CCCCC  
     BBB   
     A   

n = 10 
      A   
     BBB   
     CCCCC   
     DDDDDDD  
     EEEEEEEEE  
    FFFFFFFFFFF  
    GGGGGGGGGGGGG  
    HHHHHHHHHHHHHHH 
    IIIIIIIIIIIIIIIII 
JJJJJJJJJJJJJJJJJJJ 
KKKKKKKKKKKKKKKKKKKKK 
JJJJJJJJJJJJJJJJJJJ 
    IIIIIIIIIIIIIIIII 
    HHHHHHHHHHHHHHH 
    GGGGGGGGGGGGG  
    FFFFFFFFFFF  
     EEEEEEEEE  
     DDDDDDD  
     CCCCC   
     BBB   
      A  
+0

ありがとう!最初のものは十分だった、私はそれを得たと思う – vucko95

0

ありすることができ、あなたのコード内のいくつかのわずかな変化によって、私いくつかの異なるソリューション..あなたは以下を行うことができます

static void diamond() { 
    int n = 9; 
    int a = 5; 
    int c = 1; 
    int d = 0; 

    char p = 'A'; // defining a char.. instead of * we will print this 

    for (int i = 0; i <= n/2; i++) { 
     for (int j = 1; j < a; j++) { 

      System.out.print(" "); 
     } 
     for (int k = 1; k < c; k++) { 
      System.out.print(p); 
     } 

     for (int m = 0; m <= d; m++) { 
      System.out.print(p); 
     } 

     c++; 
     d++; 
     p++; // in means p will be the next char 
     a--; 
     System.out.println(); 
    } 
    int b = 1; 
    int y = 3; 
    int z = 2; 

    p--; // p will be the previous char 
    for (int i = 0; i < n/2 + 1; i++) { 
     p--; 
     for (int j = 0; j < b; j++) { 
      System.out.print(" "); 
     } 
     for (int k = 0; k <= y; k++) { 
      System.out.print(p); 
     } 

     for (int l = 0; l <= z; l++) { 
      System.out.print(p); 
     } 
     System.out.println(); 
     z--; 
     b++; 
     y--; 
    } 

} 
関連する問題