コンストラクタがStringオブジェクトを受け取るsplit関数を作成しました (For Example: 21.316621 87.01393 9830.686907)
。split()関数を使用して3つの部分に分割しました。次に、これら3つの新しいStringオブジェクトを3つのプリミティブ型doubleに変換します。私は、これらの二重の値にいくつかの算術演算を実行したいが、それはfollowing--数値形式の例外
Exception in thread "main" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
Split関数としての例外を示している
public class Split {
public Split(String str){
Double[] lla = new Double[3];
String[] parts=str.split("\t");
lla[0] = Double.parseDouble(parts[0]);
lla[1] = Double.parseDouble(parts[1]);
lla[2]= Double.parseDouble(parts[2]);
lla[0]+=123.567;
lla[1]+=12.456;
lla[2]+=76.5678;
System.out.println(lla[0]);
System.out.println(lla[1]);
System.out.println(lla[2]);
System.out.println();
}
}
このproblem.Thanksの私を助けてくださいfollowing--ようですparts[0]
、parts[1]
、parts[2]
空String
あるとdouble
値が含まれていません:
各番号を区切るのに2つ以上のタブを使用すると、どのようなことが起こりますか? (これはあなたの問題です) – Tom
デバッガを使用してください。問題を見つけるためにコードにSystem.out.println()を追加します。メッセージはかなり明確です:あなたの部分の1つは、実際には空の文字列です。これはデバッグ101です。 –
本当の文字列を関数に渡すことは確実ですか?また、 "\ t"はあなたの文字列がスペースではなく "\ t"で分割されていると確信していますか? – pooyan