文字列を数字に変換する:Integer.parseIntの利用

スポンサーリンク

文字列は足し算できない

文字列型の数字が二つあります。これを足し算します。まず乱暴ですが文字列同士を足します。

String str1 = "10";
String str2 = "15";
System.out.println(str1 + str2);

実行結果は

1015

となります。文字列同士を+記号で足しても文字列の連結になってしまうのです。10と15を連結したら1015になります。数字として10と15の足し算をして25という答えが欲しい場合はどうすれば良いでしょう?

文字列を数字に変換する

int型の数字を文字にするにはIntegerクラスのtoStringメソッドを呼びます。このメソッドはstaticメソッドといい

Integer.toString(変換したいint型整数)

という形で呼びます。変数の数字を文字列に変換して返してくれます。

int number = 10;
String str = Integer.toString(number);

文字列からint型の数字に変換するにはparseIntメソッドを使います。同じくstaticメソッドで以下のように呼び出します。

Integer.parseInt(変換したい文字列)

文字列をint型の数字で返してくれます。

String str = "10";
int number = Integer.parseInt(str);
System.out.println(number);

変換に失敗する例

ここで文字列が”10″という数字でできた文字列だからうまくいきました。でも文字列は数字だけとは限りません。例えば”ABC”であったらどうなるでしょうか?

String str = "ABC";
int number = Integer.parseInt(str);
System.out.println(number);

実行するとこんなメッセージが出ました。

Exception in thread "main" java.lang.NumberFormatException: For input string: "ABC"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at HelloWorld.main(HelloWorld.java:4)

ここで重要なのは最初の行の

Exception in thread "main" java.lang.NumberFormatException: For input string: "ABC"

というメッセージです。日本語に訳します。

mainという名前のスレッドの実行中に例外が発生しました。数字の書式の例外:”ABC”という文字列を入力として処理したため

ここでは途中のparseIntの処理で中断してしまい最後の出力まで到達できませんでした。

例外に対する対応

発生する可能性がある例外はあらかじめ対処することができます。try-catch節という構文を使って対応します。

String str = "ABC";
try{
  int number = Integer.parseInt(str);
  System.out.println(number);
}catch(NumberFormatException e){
  System.out.println(e.getMessage());
}
System.out.println("finish");

tryの後の{ }の中に例外が発生する処理を書き、その後のcatch後の( )のあとに発生する可能性のある例外の型と変数名を書きます。その後の{ }の中に例外が発生した場合の処理を書きます。例外からメッセージをとる事もできます。

e.getMessage()

実行すると以下のようになります。例外発生時にメッセージを出力し最後のfinishの文字列の出力まで実行されました。

For input string: "ABC"
finish
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

%d人のブロガーが「いいね」をつけました。