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

2020/08/24 公開

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

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

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

 str[ 0 ] = "10.3" → num[ 0 ] = 10.3

 str[ 1 ] = "65.2" → num[ 1 ] = 65.2

 str[ 2 ] = "-1293.67" → num[ 2 ] = -1293.67

 str[ 3 ] = "255" → num[ 3 ] = 255.0

 str[ 4 ] = "0.033" → num[ 4 ] = 0.033

以下は、String型配列double型配列に変換するソースコード例です。

StringstoNumbers2.java ← クリックしてダウンロードページに移動
001:    public class StringstoNumbers2 {
002:    	// String型の配列からdouble型の配列を作成
003:    	public static double[] getNumbers( String[] str ) {
004:    		// strがnullならnullを戻す
005:    		if ( null == str ) return null;
006:    
007:    		// String配列と同じ要素数のdouble型配列を作成
008:    		double[] num = new double[ str.length ];
009:    
010:    		// String型の値をint型の値に変換
011:    		for ( int i = 0; i < str.length; i++ ) {
012:    			try {
013:    				double value =  Double.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:    		// コマンドライン引数をdouble型の配列numbersに変換
029:    		double[] 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:    }

StringstoNumbers2を実行

C:\talavax\javasample>java StringstoNumbers2 10.3 65.2 -1293.67 255 0.033

引数で渡した文字列整数に変換してコンソール出力します。

StringstoNumbers2.javaの出力結果

10.3
65.2
-1293.67
255.0
0.033

正常に渡した文字列コンソール出力されています。

次にエラーになるケースですが、このプログラムは、数値以外の文字列を渡すとエラーになります。小数点'.'/プラス'+'/マイナス'-'/指数表記'e'はエラーになりません。

数値以外を引数として渡す

C:\talavax\javasample>java StringstoNumbers2 A B C

出力結果

変換に失敗しました!

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

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

002:    	// String型の配列からdouble型の配列を作成
003:    	public static double[] getNumbers( String[] str ) {

String配列int型配列に変換するメソッドgetNumbers1を定義しています。引数にstring型の配列strを渡します。

004:    		// strがnullならnullを戻す
005:    		if ( null == str ) return null;

引数strがnullの場合、return文nullを戻します。

007:    		// String配列と同じ要素数のdouble型配列を作成
008:    		double[] num = new double[ str.length ];

配列strと同じ要素数で、double型配列numを作成します。

010:    		// String型の値をint型の値に変換
011:    		for ( int i = 0; i < str.length; i++ ) {
012:    			try {
013:    				double value =  Double.valueOf( str[ i ] );
014:    				num[ i ] = value;
015:    			}
016:    			catch( NumberFormatException ne )
017:    			{
018:    				return null;
019:    			}
020:    		}

String配列strに格納されている文字列を変換し、double型配列numに格納しています。Stringの変換には、Double.valueOfメソッドを使っています。

Double.valueOfメソッド

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

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

  戻り値     Doubleクラスの値

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

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

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

■関連コンテンツ

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

■新着情報

2022.07.07 外部プログラムの実行 exeファイル実行
2022.07.06 完全数 6=1+2+3

■広告

Topへ