-1

私はこのようなコードを持つJavaのピラミッド番号を研究しています。

public class PyramidCharForLup {

  public static void main(String[] args) {

     int x = 7;  
     for (int i = 1; i <= x; i++) 
     {  
         for (int j = 1; j <= x - i; j++)  
             System.out.print("   ");  
         for (int k = i; k >= 1; k--)  
             System.out.print((k >=10) ?+ k : "  " + k);  
         for (int k = 2; k <=i; k++)  
             System.out.print((k>= 10) ?+ k : "  " + k);  
         System.out.println();  
     }  
   }
 }

出力は

                    1
                 2  1  2
              3  2  1  2  3
           4  3  2  1  2  3  4
        5  4  3  2  1  2  3  4  5
     6  5  4  3  2  1  2  3  4  5  6
  7  6  5  4  3  2  1  2  3  4  5  6  7

私はコードを切り刻んで、1行ずつ勉強しています。これまでこの行ですでに勉強しています。

これが私が聞きたいコードです。

public class PyramidCharForLup {

   public static void main(String[] args) 
   {
      int x = 7;
      for (int i = 1; i <= x; i++) {
         for (int j = 1; j <= x - i; j++)
            System.out.print(j);

      }
   }
}

これの出力は123456123451234123121、あなたが手配する場合の明確化のためです 123456 12345 1234 123 12 1

最初iの質問:コードに含まれるfor (int j = 1; j <= x - i; j++)ようになりi= 1234567ますか?
2番目の質問:増分1..2..3..5..6..7 ..の場合、初期化から1であり、1234567から最後の数値を引いた増分です。

1234567-1 ... 123456-1 ... 12345-1 ... 1234-1 ... 123-1 ... 12-1 ... 1-0 ....falseになるまで私は正しいですか?

それが私がこの出力を得た理由です123456123451234 123 12 1

4

1 に答える 1

1

コードには 2 つのネストされたループがあります (一方のループは他方のループ内で実行されます)。これが起こることです:

  1. x を 7 に設定します
  2. i = 1 を設定して、外側のループを開始しています。1 <= 7 なので、ループに入ります。
  3. j = 1 を設定して、内側のループを開始しています。1 <= 6 (x - i の 7-1) であるため、ループに入ります。
  4. j(1)が印字されます。
  5. j は 1 増加し、2 は 6 未満であるため、内側のループが続行されます。
  6. j(2)が印字されます。

これは j が 6 になるまで続きます。

  1. j(6)が印字されます。
  2. j は 1 ずつ増加し、現在は <= 6 ではない 7 であるため、内側のループは終了します。
  3. i が 1 つ増えます (現在は 2 です)。
  4. j を 1 に設定して、内側のループに再び入ります。j < 5 (x - i から 7-2) であるため、ループに入ります。11j(1)が印刷されます。12 j が 1 増加し、現在は 2 です。2 < 6 であるため、ループは継続します。

これは、i が 7 に達するまで続きます。i が 1 増加すると、8 で <= 7 ではないため、外側のループも存在し、プログラムは完了します。

プログラムは、1..6 から 1..5 から 1..1 に達するまで数字を数えて書き込みます。

于 2012-04-16T15:02:40.707 に答える