2013-10-22 32 views
0

標題說明了一切。出於顯而易見的原因,我得到了NumberFormatException。我想使用逗號而不是點作爲小數點分隔符,因爲我是北歐人,所以我的JTextFields中輸入了double值。如何使JTextField接受帶有逗號作爲分隔符的double值?

public void actionPerformed(ActionEvent event2) { 

    NumberFormat nf = NumberFormat.getInstance(Locale.GERMAN); 

    double firstW = Double.parseDouble(firstWeight.getText()); 
    double secondW = Double.parseDouble(secondWeight.getText()); 

    double outcome = (firstW - secondW); 

    nf.setMaximumFractionDigits(2); 
    JLabel result = new JLabel(); 
    result.setText(nf.format(outcome) +" kg"); 

    add(result); 
    setVisible(true); 

} 
+1

除非我錯過了什麼,我不認爲確實是在用戶輸入文本的任何分析JTextField類也看不到。我特別不想想JTextField會嘗試將文本轉換爲數字,所以你必須在其他類中使用一個方法,請說明你在做什麼轉換,並可能顯示應該產生'double'值的代碼。 – ajb

+0

爲問題添加了一些代碼。然而,結果以正確的德文格式顯示,並帶有逗號。 –

+0

[用逗號作爲小數點分隔符的最佳方式parseDouble?](http://stackoverflow.com/questions/4323599/best-way-to-parsedouble-with-comma-as-decimal-separator) – MikeTheLiar

回答

2

如果你有NumberFormat你已經擁有了你所需要的全部。只需使用NumberFormat.parse而不是Double.parse。但是當你使用JFormattedTextField時(猜測它是從類名所做的事情,它更容易),將所需的NumberFormat傳遞給構造函數,即new JFormattedTextField(nf). JFormattedTextField有一個getValue方法返回最後一個有效編輯,如果你的NumberFormat它會是Number

知道你的庫

0

提交時迭代文本字段,如果逗號發生替換爲十進制。循環轉換字符串後翻番

1

當你按下按鈕,你可以替換點逗號:

String text=textfield.getText().replace(",",".");

,然後你可以使用文本變量,而不是textfield.getText();

相關問題