简单计算抛出NumberFormatException

时间:2018-04-22 16:23:20

标签: java exception double awt

这是我的简单计算。

private void jComboBox2ActionPerformed(java.awt.event.ActionEvent evt) {
    double t1 = Double.parseDouble(totalcost.getText());
    double t2 = Double.parseDouble(jComboBox2.getSelectedItem().toString());
    double t = t1 * (t2 / 100);
    double ToT = t1 - t;
    Total.setText(ToT + "");
}

当我运行并选择jComboBox项时,我使用jCombox selectedItem 作为5%; 我认为这是例外。

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "5%"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043)
    at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
    at java.lang.Double.parseDouble(Double.java:538)
    at Dresss.pre_order.jComboBox2ActionPerformed(pre_order.java:586)
    at Dresss.pre_order.access$1500(pre_order.java:13)

此代码的错误是什么。 Thanx in advanced。

3 个答案:

答案 0 :(得分:3)

java.lang.NumberFormatException: For input string: "5%"

5%不是可解析的双精度型,您必须手动转换它:

Double d;
String string = "5%";
if (string.endsWith("%")) {
    string.replace("%", "");
    d = Double.parseDouble(string);
    d /= 100;
}

答案 1 :(得分:2)

如果你想使用t1而不是数字,请使用以下数字:

double t1= Double.parseDouble(totalcost.getText().replaceAll("\\D+", ""));

如果你想使用persentage:

double t1= Double.parseDouble(totalcost.getText().replaceAll("\\D+", ""))/100;

答案 2 :(得分:1)

也许这可以帮到你:

substring(x,y):用于从索引x到索引y获取字符串的一部分的函数。

indexof:获取字符串中字符索引的函数。

String s="5%";
        double t=Double.parseDouble(s.substring(0, s.indexOf("%")))/100;
        System.out.println(""+t);

输出:

0.05

`