aymnkt
@aymnkt

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

For文が2つある場合の{}の扱いについて

Q&A

Closed

解決したいこと

for文が2つ記述されているコードの、ループの扱いがわかりません。

該当するソースコード

public static void main(String[] args) {
		for(int a = 0 ; a < 4 ; a++) {
			for(int b = 0 ; b < a ; ++b)
				System.out.println("x");
				System.out.println("y");
		}

自分で試したこと

実際に動かしてみて、最初のfor文がtrueかつ2番目のfor文がtrueなら"x"が出力。
最初のfor文がtrueで、2番目のfor文がfalseなら、"y"が出力。
最初のfor文がfalseなら終了。
ということかと考えました。
2番目のfor文は{が抜けているので、直下のprintln("x")が実行になり…というのは理解できたのですが、最初のfor文がなぜprintln("y")と対になるのでしょうか。
また、実行順序を考えてみましたが、コードと結びつきません。ご教授お願いします。

0

1Answer

ご認識の通り{}無しで制御文(if, for等)を実行すると1命令しか対象になりません.
この場合,上のコードは次のコードと同等です.

for (int a = 0; a < 4; a++) {
    for (int b = 0; b < a; ++b) {
        System.out.println("x");
    }
    System.out.println("y");
}

ただ,

2番目のfor文がfalseなら、"y"が出力。

という点に関して誤りがあります.正しくは「2番目のfor文がfalseでも、"y"が出力。」です.なぜなら最初のfor文のネスト内に存在しており2番目のfor文の直後に必ず実行するようなprintln("y")だからです.

0Like

Comments

Your answer might help someone💌