ここから本文です

下記のソースで結果内容が★★の想定でいましたが、★★★が出力されます。

dad********さん

2020/1/1511:43:09

下記のソースで結果内容が★★の想定でいましたが、★★★が出力されます。

(i,j) = (0, 0), (0,1) と2回出力した時、外側のfor文を抜けて終了する想定でいますが、
(i,j)=(0,2)の時も出力されます。
if(i+j)の条件式で(i,j)=(0,2)のときはfalseでループを抜ける想定でいますが原因がわかりません。
お分かりの方、ご回答お願いします。


public class Ex_11_05_01 {
public static void main(String[] args) {
flag:
for (int i = 0; i < 2; i++){
for(int j=0; j<5; j++){
if(i+j>2) break flag;
System.out.print("★");
}
}

}

}

閲覧数:
2
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

prwssさん

2020/1/1512:04:07

>(i,j)=(0,2)の時も出力されます

『2』は『2』と等しいです

なので、「if(2>2)」は偽になります

「if(2>2)」を漢文のごとく読み下しますと、「2は2よりも大きいか?」という文になり、2は2よりも大きくは無い(2は2と等しい)ので、偽になります

要するに、「i+j>2」が真になるのは、i+jが3のときからです

「if(3>2)」という文ならば、「3は2よりも大きいか?」というニュアンスの日本語になり、これは真です

なので、原因とは、「if(2>2)」の文の意味を察することが可能であるかどうかです

質問した人からのコメント

2020/1/15 12:13:25

理解出来ました。ありがとうございます。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる