2016-08-12 9 views
0

私はコンマ区切りのString金額を変換しようとしています。もともと通貨記号があります。この場合、ペソ記号。私が何をしたかコンマで区切られた文字列の量を解析できません。元々通貨記号で

enter image description here

しかし、私はDouble.valueOf("212,312.00")またはDouble.parseDouble("212,312.00")を使用しようとしたとき、ペソが最初に署名し、私に"212,312.00"String値を与えたJTableの2列から値を取得削除することでしたそれはNumberFormatExceptionエラーを返しました。

java.text.ParseException: Unparseable number: " 212,312.00" 

これは私のコードです:

for (int x = 0; x < feesJtbl.getRowCount(); x++) { 
    String valueWithPesosSign = ((String) myModel.getValueAt(x, 1)); 
    String stringAmount = valueWithPesosSign.replaceAll("\\P{Print}", ""); 
    //JOptionPane.showMessageDialog(null, stringAmount); 
    doubleAmount = Double.parseDouble(stringAmount); 
    totalOfTuition += doubleAmount; 
} 

任意の提案?私はそれを解析する2つの異なる方法を試みたが、コンマが例外を引き起こしているように見える。

答えて

0

あなたはjava.text.NumberFormat

NumberFormat format = NumberFormat.getInstance(Locale.FRANCE); 
Number number = format.parse("212,312.00"); 
double d = number.doubleValue(); 

注意を使用する必要があります:現在のデフォルトロケールは、小数点区切り文字としてコンマを使用することが発生した場合にのみ機能します。一部のロケールではカンマを桁区切り文字として使用しています。その場合、「212,312.00」はエラーをスローする代わりに212312.00に解析します。

その他の場合は、replaceAllを使用し、数字からコンマ()を削除し、数字のみを解析することができます。

+0

私には、replaceAllメソッドが最適です。 –

0

.replaceAll().replaceAll(",","")と追加するだけでよいことに気付きました。コンマを取り除く。他の文字列を追加した後で構文解析で例外エラーが発生しなかった

for (int x = 0; x < feesJtbl.getRowCount(); x++) { 
    String valueWithPesosSign = ((String) myModel.getValueAt(x, 1)); 
    String stringAmount = valueWithPesosSign.replaceAll("\\P{Print}", "").replaceAll(",",""); 

    doubleAmount = Double.parseDouble(stringAmount); 
    totalOfTuition += doubleAmount; 
} 
関連する問題