2020.08.24
文字列
文字列配列をdouble配列に変換
配列に格納されているStringをdouble型の配列に変換するプログラムを紹介します。これは、コマンドラインで渡されたString型の引数を数値型に変換するのに使用できます。以下は、double型の配列に変換する例です。
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
Javaソースコード
StringstoNumbers2.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 StringstoNumbers2 { // String型の配列からdouble型の配列を作成 public static double[] getNumbers( String[] str ) { // strがnullならnullを戻す if ( null == str ) return null; // String配列と同じ要素数のdouble型配列を作成 double[] num = new double[ str.length ]; // String型の値をint型の値に変換 for ( int i = 0; i < str.length; i++ ) { try { double value = Double.valueOf( str[ i ] ); num[ i ] = value; } catch( NumberFormatException ne ) { return null; } } // 配列numを戻す return num; } // メイン public static void main( String[] args ) { // コマンドライン引数をdouble型の配列numbersに変換 double[] 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 StringstoNumbers2.java
コンパイル ソースコードが「UTF-8」の場合
C:\talavax\javasample>javac StringstoNumbers2.java
文字列を整数に変換
java StringstoNumbers2 10.3 65.2 -1293.67 255 0.033
10.3 65.2 -1293.67 255.0 0.033
数値以外を引数として渡す
java StringstoNumbers2 A B C
変換に失敗しました!
Javaソースコードの解説
ここからは、変換するメソッドについて解説します。
002 003
// String型の配列からdouble型の配列を作成 public static double[] getNumbers( String[] str ) {
004 005
// strがnullならnullを戻す
if ( null == str ) return null;
007 008
// String配列と同じ要素数のdouble型配列を作成 double[] num = new double[ str.length ];
010 011 012 013 014 015 016 017 018 019 020
// String型の値をint型の値に変換 for ( int i = 0; i < str.length; i++ ) { try { double value = Double.valueOf( str[ i ] ); num[ i ] = value; } catch( NumberFormatException ne ) { return null; } }
Double.valueOfメソッド
public static Double valueOf( String s )
・指定されたStringの値を保持するDoubleオブジェクトを返します。 パラメータ s : 整数(Doubleクラス)に変換する文字列の値 戻り値 Doubleクラスの値
try { ~ } catchは、失敗する可能性がある処理を波括弧で囲み、その処理に失敗したときにcatch { ~ }の波括弧で囲まれた処理を実行するということです。この場合、文字列がdouble型に変換できないときにcatch { ~ }の処理が実行されます。