注意深いですか?やってみます


例えば、このような問題があります。100年のうち何秒があるかを計算してもらえます。どうしますか?
簡単だと思いますが、例えばこのプログラムを書きます。
public class test {
	public static void main(String []args){
		long count = 0;
		count = 60 * 60 * 24 * 365 * 100 ;
		System.out.print(count);
	}
}
計算の結果は分かりますか?あなたの考え通りの結果ですか?間違いなくそうではないです。どうしてここでこんなつまらないものを書きましたか?結果はマイナスです。
原因は分かりますか?はい、あふれます60,100という数字は整数ですから、相乗を行う時の結果はintの最大表示範囲を超えています。つまりオーバーフローを引き起こします。
しかし、どうやって修正しますか?そこで思いつきましたが、一つのlongタイプを追加しないデータはlongタイプに変換されますか?これで結果が正常に表示されるのではないかということで、私たちはプログラム上で次のように修正しました。
public class test {
	public static void main(String []args){
		long count = 0;
		count = 60 * 60 * 24 * 365 * 100 * 1L;
		System.out.print(count);
	}
}
実行プログラム:結果:-1141367296
また間違えましたなぜですか?このように、javaの中の演算は左から右までなので、countの計算をする時、前の整形データの結果はすでに溢れています。だから、この「1 L」はここでは何の役にも立たないです。私達はこの1 Lを前に移動すればいいです。次の手順に従います。
public class test {
	public static void main(String []args){
		long count = 0;
		count = 1L * 60 * 60 * 24 * 365 * 100;
		System.out.print(count);
	}
}
これは最終的に欲しい結果を得た。
 
プログラムを話しています。
public class test {
	public static void main(String []args){
		int i = 0;
		for (i = 1;i <= 10; i++);{
			System.out.print(i);
		}
	}
}
このプログラムの結果が分かりますか?
結果は1-10ですか?いいえ、11です
for循環後のセミコロンに注意してください。このセミコロンこそ、forサイクルが空循環で、計算が行われていないため、最終的に出力されました。iの最終結果、つまり11です。
プログラムには細かいところがたくさんあります。うっかりしてプログラムの落とし穴に落ちてしまいました。