如何比较java中if语句的Double值?

时间:2016-07-20 08:18:51

标签: java

我的桌面应用程序的文本框包含价格值。例如,如果我输入25000

Double priceSec = Double.parseDouble(cusPrice.getText());

我将25000作为双倍值传递

所以现在我要比较那个值并检查它是否为空?

if(cusPrice2.getText()==null || cusPrice2.getText().isEmpty()){
        Double priceSec=0.0;
        }

我知道我可以为

创建一个else条件
if textbox !=null
total=txtbox1+txtbox2+txtbox3;

如果文本框值为空或不为空。价值应该总共存在。 但在我的代码中,它显示为null。

我还有其他办法吗? 你能告诉我一种方法吗?

这是我的完整代码

  private void cusOkBtnActionPerformed(java.awt.event.ActionEvent evt) { 

    Double priceSec = Double.parseDouble(cusPrice2.getText());
    Double priceThird = Double.parseDouble(cusPrice3.getText());
    Double priceFourth = Double.parseDouble(cusPrice4.getText());
    Double priceFifth = Double.parseDouble(cusPrice5.getText());

    if(cusPrice2.getText()==null || cusPrice2.getText().isEmpty() || cusPrice2.getText() !=null ){
            priceSec=0.0;
            costCls.setItemPrice(priceSec);
            }
            else if(cusPrice3.getText()==null || cusPrice3.getText().isEmpty()){
            priceThird=0.0;
            }
            else if(cusPrice4.getText()==null || cusPrice4.getText().isEmpty()){
            priceFourth=0.0;
            }
            else if(cusPrice5.getText()==null || cusPrice5.getText().isEmpty()){
            priceFifth=0.0;
            }

           Double setItemTotal = priceCus+priceSec+priceThird+priceFourth+priceFifth;

}

4 个答案:

答案 0 :(得分:0)

您应该使用Exception s。

try {
    Double priceSec = Double.parseDouble(cusPrice.getText());
} catch (NullPointerException e1) {
    //null somewhere
} catch (NumberFormatException e2) {
    //not a number - on controlled input - empty field.
}

答案 1 :(得分:0)

最好使用Exception实现中已有的内置Double.parseDouble(String s)语义。 (恕我直言:不要预先检查,因为你正在使异常情况成为正常流量的一部分)

使用类似

的功能
private static double getValue(String str) {
    try {
        return  Double.parseDouble(str);
    } catch (NumberFormatException e) {
        return 0d;
    }
}

然后你会像:

一样使用它
String priceStr = cusPrice.getText();
double d = getValue(priceStr);

答案 2 :(得分:0)

double是浮点的基本类型,Double是包装double值的Object子类。所以:

double priceSec = Double.parseDouble(cusPrice.getText());

double price2Sec = cusPrice2.getText().isEmpty())
        ? 0.0
        : Double.parseDouble(cusPrice.getText());

if (priceSec == price2Sec) { ...

然而,对于财务数据,双精度值具有较小的近似误差,可以变得可见 - 尤其是==。因此,最好使用BigDecimal,它可以进行定点运算。

 BigDecimal priceSec = new BigDecimal(cusPrice.getText());
 if (priceSec.compareTo(price2Sec) == 0) { ...

有点丑陋的API进行计算:

 x = x.add(y.divide(new BigDecimal("12.50")));

答案 3 :(得分:0)

你可以试试这个

private void cusOkBtnActionPerformed(java.awt.event.ActionEvent evt) { 

    Double priceSec=0.0,priceThird=0.0,priceFourth=0.0,priceFifth=0.0;
    costCls.setItemPrice(0.0);


    if(cusPrice2.getText()!=null && !cusPrice2.getText().isEmpty() ){
        priceSec = Double.parseDouble(cusPrice2.getText());
        costCls.setItemPrice(priceSec);
    }
    else if(cusPrice3.getText()!=null && !cusPrice3.getText().isEmpty()){
        priceThird = Double.parseDouble(cusPrice3.getText());
    }
    else if(cusPrice4.getText()!=null && !cusPrice4.getText().isEmpty()){
        priceFourth = Double.parseDouble(cusPrice4.getText());
    }
    else if(cusPrice5.getText()!=null && !cusPrice5.getText().isEmpty()){
        priceFifth = Double.parseDouble(cusPrice5.getText());
    }

   Double setItemTotal = priceCus+priceSec+priceThird+priceFourth+priceFifth;

}