我的桌面应用程序的文本框包含价格值。例如,如果我输入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;
}
答案 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;
}