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
以下は、String型の配列をint型の配列に変換するソースコード例です。
StringstoNumbers1.java ← クリックしてダウンロードページに移動001: public class StringstoNumbers1 { 002: // String型の配列からint型の配列を作成 003: public static int[] getNumbers( String[] str ) { 004: // strがnullならnullを戻す 005: if ( null == str ) return null; 006: 007: // String配列と同じ要素数のint型配列を作成 008: int[] num = new int[ str.length ]; 009: 010: // String型の値をint型の値に変換 011: for ( int i = 0; i < str.length; i++ ) { 012: try { 013: int value = Integer.valueOf( str[ i ] ); 014: num[ i ] = value; 015: } 016: catch( NumberFormatException ne ) 017: { 018: return null; 019: } 020: } 021: 022: // 配列numを戻す 023: return num; 024: } 025: 026: // メイン 027: public static void main( String[] args ) { 028: // コマンドライン引数をint型の配列numbersに変換 029: int[] numbers = getNumbers( args ); 030: 031: // 配列の作成に失敗したらreturn文でメソッドを抜ける 032: if ( null == numbers ) { 033: System.out.println( "変換に失敗しました!" ); 034: return; 035: } 036: 037: // 変換結果を表示 038: for ( int i = 0; i < numbers.length; i++ ) 039: System.out.println( numbers[ i ] ); 040: } 041: }
StringstoNumbers1を実行
C:\talavax\javasample>java StringstoNumbers1 599 10 21 33 1034
StringstoNumbers1.javaの出力結果
599 10 21 33 1034
次にエラーになるケースを考えてみます。以下の2つの方法でプログラムを実行するとエラーになります。
①数字に小数点を付けた数値を引数として渡す
C:\talavax\javasample>java StringstoNumbers1 599 10.0 21 33 1034
出力結果
変換に失敗しました!
2つ目の引数10.0に小数点があるのでエラーになります。
②数字以外を引数として渡す
C:\talavax\javasample>java StringstoNumbers1 A B C
出力結果
変換に失敗しました!
ここからは、変換するメソッドについて解説します。
002: // String型の配列からint型の配列を作成 003: public static int[] getNumbers( String[] str ) {
String配列をint型の配列に変換するメソッドgetNumbersを定義しています。引数にstring型の配列strを渡します。
004: // strがnullならnullを戻す 005: if ( null == str ) return null;
引数strがnullの場合、return文でnullを戻します。
007: // String配列と同じ要素数のint型配列を作成 008: int[] num = new int[ str.length ];
配列strと同じ要素数で、int型の配列numを作成します。
010: // String型の値をint型の値に変換 011: for ( int i = 0; i < str.length; i++ ) { 012: try { 013: int value = Integer.valueOf( str[ i ] ); 014: num[ i ] = value; 015: } 016: catch( NumberFormatException ne ) 017: { 018: return null; 019: } 020: }
String配列strに格納されている文字列を変換し、int型の配列numに格納しています。Stringの変換には、Integer.valueOfメソッドを使っています。
Integer.valueOfメソッド
■指定されたStringの値を保持するIntegerオブジェクトを返します。 パラメータ s : 整数(Integerクラス)に変換する文字列の値 戻り値 Integerクラスの整数の値
try { ~ } catchは、失敗する可能性がある処理を波括弧で囲み、その処理に失敗したときにcatch { ~ }の波括弧で囲まれた処理を実行するということです。この場合、文字列がint型に変換できないときにcatch { ~ }の処理が実行されます。
入力した文字がint型の値に変換できない場合、メソッドはnullを戻して終了します。このメソッドの場合、文字列に小数点が含まれているとエラーとなります。
以上が、String配列をint型の配列に変換する方法です。
■関連コンテンツ
Javaの配列 | 同じ型の変数をまとめた配列について解説 |
文字列配列をdouble配列に変換 | String[]→double[] |
■新着情報
2022.07.07 | 外部プログラムの実行 | exeファイル実行 |
2022.07.06 | 完全数 | 6=1+2+3 |
■広告