2012-04-16 8 views
-1

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

​​3210

出力は、私は、コードをチョップし、私はすでにこれまでのところ、このラインで勉強していますラインでそれをラインを勉強

    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 

..ですheheh

だからここです私が尋ねたいコード。 for (int j = 1; j <= x - i; j++)i= 1234567コードでiになっている:あなたは 123456 12345 1234 123 12 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ているのですか?
2番目の質問:増分1..2..3..5..6..7 ..が1234567から最後の数字を減算する増分である場合

1234567-1のようになります。 123456 - 1 ... 12345 - 1 ... 1234 - 1 ... 123 - 1 ... 12-1 ... 1-0 ....間違っていますか?

、それは私はあなたのコードは、2つのネストされたループ(一方が他方の内側のループの実行を)持っている。この出力123456 12345 1234 123 12 1

+0

に到達するまで、私は心buglingピラミッドに沿って私を助けてくださいことを理解するまで、さらに行きたい1..5から、その後、1..6から数字を書きますあなたのプログラム道はhehehehe .... – JustNoobWillingToLearn

答えて

1

を得た理由です。これは何が起こるかです:

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

    1. Jになるまで

    これは続きます。

  7. jは1だけ増加し、現在は7であり、< = 6ではないため、内部ループが終了します。
  8. iが1増加しました(現在は2になります)。
  9. 内側ループが再び入力され、jを1に設定します.j < 5(x - iの7-2)以降、ループに入ります。 11 j(1)が印刷されます。 12 jが1つ増えて2になりました.2 < 6以降、ループが続行されます。

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

カウントし、それが1..1

+0

私はここではない1234567 haha​​ha ....私はここ1 am i rightですか?私は本当にこれに新しいです。 – JustNoobWillingToLearn

+0

それは初期化i = 1を変更しませんか?私は最初のループの出力を表示するので。 for(i = 1; i <= 7、i ++)出力1234567を取得しました。 – JustNoobWillingToLearn

+0

OK今は理解しています。私の国ではここに深夜があります。私が投稿したさらなる質問は、GMT + 8笑であるかもしれません。 – JustNoobWillingToLearn