2017-10-11 9 views
-6

私は探していた出力を得るためにサンプルコードを修正しましたが、以下のネストされたfor-loopsの背後にあるロジックは分かりません。誰かが私にそれぞれのループが何をしているのかを詳しく説明することができますか?このようにループが構築されるのはなぜですか?あなたは、このような擬似コードがある場合、そのようなループの入れ子になったJavaのネストされたforループを使用してピラミッド形を印刷するロジック

public class Pyramid { 
    public static void main(String[] args) { 
     int size = 15; 

     for (int i = 1; i <= size; i += 2) { 

      for (int k = 0; k < (7 - i/2); k++) { 
       System.out.print(" "); 
      } 

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

      System.out.println(); 
     } 
    }  
} 

output (below): 

     * 
     *** 
    ***** 
    ******* 
    ********* 
    *********** 
************* 
*************** 
+1

あなたのインデントを修正すれば、はるかに明確になります!ピラミッドを描くときには、 'i ..'行ごとに '0 ..(N-i)/ 2'スペースとそれに続く' 1..i'星を描画する必要があります。 – vasek

+0

私は何の研究の証拠もないので、この質問を下落させました。あなたの質問を編集して、あなたが行った研究と難しいところを正確に*含めるようにしてください。あなたがこれを行うことができれば、私は私のdownvoteを撤回するかもしれません。 –

+0

外側ループのどの部分を理解していませんか? – Andreas

答えて

0

が使用されている:あなたの特定のケースで

Do the following x times: 
    Do the following y times: 
     some stuff 
    Do the following z times: 
     some stuff 

を、ピラミッドのサイズは動的であり、sizeという変数に格納されます。

  • いくつかの空白や一部*

はどのようにあなたがしていることを印刷します:ピラミッドを印刷するには、size回以下のものを印刷することがありますか?空白と空白の数を計算して印刷します。空白の数と*の数は動的なので、ハードコーディングする代わりに、これを行うにはforループが必要です。

構造が表示されますか?

外部ループはピラミッドの各レイヤーを印刷します。最初の内側のループは白いスペースを出力し、2番目の内側のループは*を出力します。

関連する問題