今週のお題「雨の日の楽しみ方」
4. Java if文、ゼロで割る、データの型変換
図Prog4_1もjavaのプログラムである.
キーボードから二つ整数を入力して、それらを表示し、二つ目の整数がゼロであるかをチェックし、ゼロだともう一度二つの数を表示する。その後、a/bを計算表示する。その時 bがゼロであると、ArithmeticExceptionが起こりプログラムがストップする。そうでなければ a/bと(double)a/bが表示される。
17行目のa/bは割り切れる場合も割り切れない場合も小終点以下が切り捨てられる。これはaとb両方が整数であるからである。18行目の(double)a/bでは、先ず(double)aが処理されint のaがdoubleに変換され、doubleのaがintのbによって割られる形になるが、型が違う数値間の計算はより精度が高い数値へ精度の低い数値が変換され(この場合bがdoubleに変換され、二つともdoubleなった所で、除算が行われる。
図Prog4_1_resは実行結果である。プログラムは2回実行されている。最初はa=5 b=0でそれが2回表示され、Dividion by zeroのExceptionが起こって、止まっている。2回目は45 と8が入力され,int間の計算(45/8)では切り捨てが行われ割り算の結果は5となっている。しかし、aをdoubleに変換した後はdouble間の演算になり、結果は実数で表示されている(5.625)。