gpt4 book ai didi

java - String.Format ("%05.2f"中的 NumberFormatException,8.00)

转载 作者:搜寻专家 更新时间:2023-11-01 02:26:45 26 4
gpt4 key购买 nike

我的程序使用意大利语言环境,因此 Float.parseFloat("8,00") 必须运行良好。但是我在下面一行中遇到了一个非常糟糕的 NFE:

this.cuSurfaceJTextField1.setValue(
String.format("%05.2f",info.getCuSurface()));

我注意到上面的代码在我对监听器所做的一些更改之前工作得很好,这些更改看起来与这行代码无关。(现在我有一个 propertyChangeListener,它在值时更新模型被改变了。

this.cuSurfaceJTextField1.addPropertyChangeListener("value", 
new PropertyChangeListener() {

@Override
public void propertyChange(PropertyChangeEvent evt) {
info.setCuSurface(Float.parseFloat(
(String)cuSurfaceJTextField1.getValue()));
updateCuSurface();
}
});

异常有用的部分:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "08,00"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241)
at java.lang.Float.parseFloat(Float.java:452)
at View.bars.QuadrateJPanel$11.propertyChange(QuadrateJPanel.java:348)
at java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:328)
at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263)
at java.awt.Component.firePropertyChange(Component.java:8382)
at javax.swing.JFormattedTextField.setValue(JFormattedTextField.java:799)
at javax.swing.JFormattedTextField.setValue(JFormattedTextField.java:502)

最佳答案

I'm using italian locale for my program so Float.parseFloat("8,00") must function well.

没有。 Float.parseFloat 不依赖于语言环境。因此,有两种方法可以解决您的问题:

  • 格式如下:

    String.format(Locale.US, "%05.2f",info.getCuSurface())
  • 解析时替换逗号:

    info.setCuSurface(Float.parseFloat(
    ((String) cuSurfaceJTextField1.getValue()).replace(',','.')));

关于java - String.Format ("%05.2f"中的 NumberFormatException,8.00),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20844203/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com