Javaプログラミング学習サイト ゆるゆるプログラミング

2020/08/24 公開

・文字列配列をint配列に変換

配列に格納されているStringをint型配列に変換するプログラムを紹介します。これは、コマンドラインで渡されたString型の引数を数値型に変換するのに使用できます。以下は、int型配列に変換する例です。

例)String型配列strをint型配列numに変換

 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

出力結果

変換に失敗しました!

1~3番目の引数がアルファベットなのでエラーになります。

ここからは、変換するメソッドについて解説します。

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メソッド

public static Integer valueOf( String s )
■指定されたStringの値を保持するIntegerオブジェクトを返します。

  パラメータ s : 整数(Integerクラス)に変換する文字列の値

  戻り値     Integerクラスの整数の値

try { ~ } catchは、失敗する可能性がある処理を波括弧で囲み、その処理に失敗したときにcatch { ~ }の波括弧で囲まれた処理を実行するということです。この場合、文字列int型に変換できないときにcatch { ~ }の処理が実行されます。

入力した文字がint型の値に変換できない場合、メソッドnullを戻して終了します。このメソッドの場合、文字列に小数点が含まれているとエラーとなります。

以上が、String配列int型配列に変換する方法です。

■関連コンテンツ

Javaの配列 同じ型の変数をまとめた配列について解説
文字列配列をdouble配列に変換 String[]→double[]

■新着情報

2021.08.04 書式指定でコンソール出力 printf()とは?

■広告

 

 

 

 

 

スッキリわかるJava入門第3版 [ 中山清喬 ]

価格:2,860円
(2021/6/18 14:32時点)
感想(6件)

 

 

Topへ