我有这个问题,我试图检索并将计算值传递给JformattedTextfield,我知道由于jformattedTextfield(,),Float不能接受1,500.00。有没有办法绕过这个问题?
private void SellButtonActionPerformed(java.awt.event.ActionEvent evt) {
float foreign , sellingRate, localAmount;
try{
DefaultTableModel dtm=(DefaultTableModel)p1.getModel();
int i = p1.getSelectedRow();
String s1=dtm.getValueAt(i,2).toString();
txt_rate.setText(s1);
}catch(Exception e){
JOptionPane.showMessageDialog(null, "Select Currency First");
}
foreign = Float.parseFloat(txt_select.getText());
sellingRate = Float.parseFloat(txt_rate.getText());
localAmount = foreign / sellingRate;
txt_amount.setValue(localAmount);
}
错误消息
Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "1,500.00"
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1241)
at java.lang.Float.parseFloat(Float.java:452)
我可以在{ 1,000 }
下设置数字预期结果
答案 0 :(得分:1)
您真的想让用户使用千位分隔符输入货币吗?至少到目前为止我见过和开发的所有应用程序,这都是非常罕见的。
通常您只将它用于显示目的,而不是用于输入。因此,用户可以输入1000
,然后通过1,000.00
格式化值,将其显示为NumberFormat.format()
。
如果您确实需要这样的输入,则应将其视为String
,然后由NumberFormat.parse()
进行解析,如here所示。