0

标题说明了一切。我得到 NumberFormatException 的原因很明显。因为我是北欧人,所以我想使用逗号而不是点作为小数分隔符向我的 JTextFields 输入双精度值。

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);

}
4

3 回答 3

2

如果你有一个NumberFormat,你已经拥有了你需要的一切。只需使用NumberFormat.parse而不是Double.parse. 但是,当您使用 a JFormattedTextField(从类名中猜出它的作用时,它会更容易。将期望NumberFormat的值传递给构造函数,即new JFormattedTextField(nf). TheJFormattedTextField有一个getValue返回最后有效编辑的方法,如果您的NumberFormat它将是Number.

了解你的图书馆

于 2013-10-22T15:26:53.700 回答
1

按下按钮时,您可以用点替换逗号:

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

然后你可以使用 text 变量,而不是 textfield.getText();

于 2013-10-22T15:11:00.830 回答
0

提交时迭代文本字段,如果出现逗号,则替换为小数。循环后将字符串转换为双精度

于 2013-10-22T14:53:19.543 回答