2017-02-11 16 views
-2

私はJavaでダイヤモンドを印刷するコードを開発しました。コードは*使用してダイヤモンドを印刷し、「o」は、コードは次のとおりです。ダイヤモンドの印刷Java出力が必要でない正確に

System.out.println("Diamond Height: " + DIAMOND_SIZE); 
    System.out.println("Output for: For Loop"); 

    int noOfRows = DIAMOND_SIZE; 

    //Getting midRow of the diamond 
    int midRow = (noOfRows)/2; 

    //Initializing row with 1 
    int row = 1; 

    //Printing upper half of the diamond 
    for (int i = midRow; i > 0; i--) 
    { 
     //Printing i spaces at the beginning of each row 
     for (int j = 1; j <= i; j++) { 
      System.out.print(" "); 
     } 

     //Printing j *'s at the end of each row 
     for (int j = 1; j <= row; j++) { 
      System.out.print("* "); 
     } 

     System.out.println(); 

     //Incrementing the row 
     row++; 
    } 

    //Printing lower half of the diamond 
    for (int i = 0; i <= midRow; i++) { 
     //Printing i spaces at the beginning of each row 
     for (int j = 1; j <= i; j++) { 
      System.out.print(" "); 
     } 

     //Printing j *'s at the end of each row 
     int mid = (row+1)/2; 
     for (int j = row; j > 0; j--) { 
     if(i==0 && j==mid) { 
      System.out.print("o "); 
     } 
     else { 
      System.out.print("* "); 
     } 
     } 

     System.out.println(); 

     //Decrementing the row 
     row--; 
    } 
} 

私はこのことから得る結果は次のとおりです。

ダイヤモンド身長:5

* 
* * 
* o * 
* * 
    * 
Diamond Height: 3 
* 
* o 
* 

しかし、イムしよう次の結果が得られます。

Diamond Height: 5 
     * 
    * * * 
    * * o * * 
    * * * 
     * 

Diamond Height: 3 
    * 
* o * 
    * 
What am I doing wrong? I have tried several things but nothing seems to help, Please help. 
+0

試しましたか? – abl

+0

あなたは真ん中の行を、その結果、中間の文字を知っています。あなたがそれに達した時をテストし、 '*'の代わりに 'o'を表示してください。 – QBrute

答えて

1

ダイヤモンドの下半分を印刷するときに、内側ループロジックを変更することができます。

//Printing j *'s at the end of each row 
int mid = (row+1)/2; 
    for (int j = row; j > 0; j--) 
    { 
     if(i==0 && j==mid) System.out.print("o "); 
      else System.out.print("* "); 
    } 
+0

whileループでこれをどうやってやりますか? – anon1234

+0

int j =行; while(j> 0){/ *ここにコードを挿入する*/j--; } – algojava

+0

私が投稿した答えを見てください、それは動作していないようです。 – anon1234

関連する問題