2020.08.24
文字列
文字列配列をint配列に変換
配列に格納されているStringをint型の配列に変換するプログラムを紹介します。これは、コマンドラインで渡されたString型の引数を数値型に変換するのに使用できます。以下は、int型の配列に変換する例です。
str[ 0 ] = "599" → num[ 0 ] = 599 str[ 1 ] = "10" → num[ 1 ] = 10 str[ 2 ] = "21" → num[ 2 ] = 21 str[ 3 ] = "33" → num[ 3 ] = 33 str[ 4 ] = "1034" → num[ 4 ] = 1034
Javaソースコード
StringstoNumbers1.java
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041
public class StringstoNumbers1 { // String型の配列からint型の配列を作成 public static int[] getNumbers( String[] str ) { // strがnullならnullを戻す if ( null == str ) return null; // String配列と同じ要素数のint型配列を作成 int[] num = new int[ str.length ]; // String型の値をint型の値に変換 for ( int i = 0; i < str.length; i++ ) { try { int value = Integer.valueOf( str[ i ] ); num[ i ] = value; } catch( NumberFormatException ne ) { return null; } } // 配列numを戻す return num; } // メイン public static void main( String[] args ) { // コマンドライン引数をint型の配列numbersに変換 int[] numbers = getNumbers( args ); // 配列の作成に失敗したらreturn文でメソッドを抜ける if ( null == numbers ) { System.out.println( "変換に失敗しました!" ); return; } // 変換結果を表示 for ( int i = 0; i < numbers.length; i++ ) System.out.println( numbers[ i ] ); } }
コンパイル ソースコードが「ANSI」の場合
C:\talavax\javasample>javac -encoding sjis StringstoNumbers1.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac StringstoNumbers1.java
文字列を整数に変換
java StringstoNumbers1 599 10 21 33 1034
599 10 21 33 1034
次にエラーになるケースを考えてみます。以下の2つの方法でプログラムを実行するとエラーになります。
①数字に小数点を付けた数値を引数として渡す
java StringstoNumbers1 599 10.0 21 33 1034
変換に失敗しました!
2つ目の引数10.0に小数点があるのでエラーになります。
②数字以外を引数として渡す
java StringstoNumbers1 A B C
変換に失敗しました!
Javaソースコードの解説
ここからは、変換するメソッドについて解説します。
002 003
// String型の配列からint型の配列を作成 public static int[] getNumbers( String[] str ) {
004 005
// strがnullならnullを戻す
if ( null == str ) return null;
007 008
// String配列と同じ要素数のint型配列を作成 int[] num = new int[ str.length ];
010 011 012 013 014 015 016 017 018 019 020
// String型の値をint型の値に変換 for ( int i = 0; i < str.length; i++ ) { try { int value = Integer.valueOf( str[ i ] ); num[ i ] = value; } catch( NumberFormatException ne ) { return null; } }
Integer.valueOfメソッド
public static Integer valueOf( String s )
・指定されたStringの値を保持するIntegerオブジェクトを返します。 パラメータ s : 整数(Integerクラス)に変換する文字列の値 戻り値 Integerクラスの整数の値
try { ~ } catchは、失敗する可能性がある処理を波括弧で囲み、その処理に失敗したときにcatch { ~ }の波括弧で囲まれた処理を実行するということです。この場合、文字列がint型に変換できないときにcatch { ~ }の処理が実行されます。