質問: 以下のプログラムの実行結果について 答えは9999になるのですが、どうしてこの結果になるのでしょうか? jのfor文を9999回*iのfor文9999回なので、答えは 99980001になると自分は思いました。 なぜ実行結果は違ったのか教えてください。 ### 該当のソースコード ``` class a1{ static int b(int x, int y){ return (x/y)*(y/x); } public static void main(String args[]){ int s=0; for(int i=1; i<100000; i++){ for(int j=1; j<10000; j++){ s+=b(i,j); } } System.out.println(s); } } ```
回答: Javaでは、整数同士の割り算は答えが整数になるので、`x != y`の場合、`x/y`か`y/x`のどちらかが0になって、`b`メソッドの返り値も0になります。 結果、`x == y`の9999回だけ`1*1=1`を足した、9999が結果となります。