Javaプログラミングの基礎6 型変換とエラー処理について
まずはJavaの型変換について説明していきます。
代表的な型に文字列型と数値型がありましたね。
文字列を数値型に変換したい時があります。
どのような時でしょうか?
例えば100という文字があります。
ここに1を足して101にしたい時
こう書くとどうなるでしょうか?
String moji="100";
moji=moji+1;
System.out.println(moji);
答えは1001
です。
あれ?101にしたいのにってなりますね。
文字列の足し算は後ろに別の文字がくっつくだけになります。
文字列を計算に使いたい時は数値に変換してから足す必要があります。
文字を数値にしたい時はInteger.parseIntを使います。
String moji="100";
Integer suuchi =Integer.parseInt(moji);
System.out.println(suuchi+1);
ちゃんと101になりましたね。
これはすごく便利ですね。
でも、Javaとしてはちゃんとルールを守ってくれないとエラーになります。
どんな時でしょうか?
答えは数値に変換できない文字を数値に変換しようとしたときです。
数値に変換できない文字をInteger.parseIntをしてみましょう。
String moji="僕は17歳";
Integer suuchi =Integer.parseInt(moji);
System.out.println(suuchi+1);
コンソールにエラーが出ましたね。これをExceptionといいます。
このエラーはどの場所にどんなエラーが発生しているかを示しています。
Exception in thread "main" java.lang.NumberFormatException: For input string: "僕は17歳"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
at java.base/java.lang.Integer.parseInt(Integer.java:668)
at java.base/java.lang.Integer.parseInt(Integer.java:786)
at MainShori.main(MainShori.java:10)
NumberFormatException はこの文字が数値のフォーマットになってないよ。
と言っています。
エラーを少しずつ下を見ていくと、自分が作ったファイルの名前が出てきます。
MainShori.java:10
ここです。これはMainShori.javaの10行目でエラーが発生しているよ。という意味です。
10行目は左の数値10のところなので、
Integer suuchi =Integer.parseInt(moji);
ここですね。これを知っていれば、エラーが出たときにすぐに対応できます。
よくシステムの保守をやっていると、早く正確にエラーの箇所を見つけ、
適切に修正する能力が大事だと思っています。
エラーになっても、決まった適切な処理をして、システムが止まらないようにしたい場合は
try とcatchを使います。
こう書いてみましょう。tryとcatchの間に処理したい内容を書き、そこの間でもしエラーが発生した場合は、catchの中に入ります。
先ほどのExceptionの内容はeという変数に入りますので、
e.printStackTrace();でエラー内容を出力できます。
String moji="僕は17歳";
try {
Integer suuchi =Integer.parseInt(moji);
System.out.println(suuchi+1);
}catch(Exception e) {
//処理に失敗した時にここにくる
e.printStackTrace();
System.out.println(moji+"変換に失敗しました");
}
エラーを表示しましたが、システムが止まる事なく最後まで進みましたね。
以上が型変換とエラー処理でした。如何でしたか?
引き続き頑張ってくださいね!!