- ベストアンサー
JAVAで...
プログラム初心者です。 九九を表示するプログラムの一部ですが・・・ ---------------------------------------------------------- for(int i=1;i<10;i++){ for(int j=1;j<10;j++){ System.out.print(i+"*"+j+"="+(i*j)+","); ---------------------------------------------------------- これで 1*1=1、1*2=2.1*3=3、..... 2*1=2、2*2=4、.... 3*1=3....................... | 9*1=9・・・・・・........ のようにちゃんと表示されますが・・・ なんでこのようになるのでしょうか・・・。 考えてもわからないです。 私には1*1=1、2*2=4、3*3=9、4*4=16・・・・・9*9=81 になるようにしか考えられないのですが・・・ 説明がわかりにくいかもしれないですが・・ お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
何度もすみません。 もうちょっとわかりやすく書きます。 (さっきのは、走り書きっぽいので(^^;) もっと噛み砕いて書くと↓ for(iを1~9に変化させる){ …A for(jを1~9に変化させる){ …B System.out.print(i*j=○を表示する); } } こんな感じになるわけですね。 for文ってのは、中身を済ませて次に進みます。 A文で i を増やすためには、中にあるB文を一通り済ませます。 つまり、iが1の時、jを1~9で動かしてから、iを2にする。 そんな具合に、考えるとわかりやすいですよ。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17070)
次の動きをするからです。 ( )内が処理される順序。 ( 1)I=1 J=1 ( 2)I=1 J=2 ( 3)I=1 J=3 ・・・・・・・・・・ ( 9)I=1 J=9 (10)I=2 J=1 J=10になろうとするが条件 がJ<10のためJのループの 外に出てIを1増やす (11)I=2 J=2 ・・・・・・ (17)I=2 J=8 (18)I=2 J=9 (19)I=3 J=1 J=10になろうとするが条件 がJ10のためJのループの 外に出てIを1増やす (20)I=3 J=2 ・・・・・・・
お礼
ありがとうございました^^ 理解できました。
- infinity
- ベストアンサー率41% (123/295)
for(int i=1;i<10;i++){ for(int j=1;j<10;j++){ … というのを見て気づくといいのですが、 「j」を増やすという動作は、 「i」を増やすというループ文の中にあるわけです。 つまり、i=1の時に、jを1~9の間、変化させる。 それが終了したら、i=2にしてjを変化させる、 次は…という具合になるんです。 for文がどこまでかかっているか、 というのを注意してみるといいですね。
お礼
ありがとうございます!
お礼
分かりやすいご説明ありがとうございました。 よく分かりました!(^^)