我需要查看文本字段是否为空值。我需要看看是否
if(Double.parseDouble(distanceTf.getText())==0)
我知道0不会工作。我也知道null赢了工作,我知道.equals不会工作。 有谁知道如何将这行代码与空值进行比较?
if (stageTf.getText().equals("") || Double.parseDouble(distanceTf.getText()) == null) {
JOptionPane.showMessageDialog(null, "You did not enter both a stage number and distance");
return;
}
感谢上述所有回复,但他们没有工作。
我遇到问题的部分代码是:
if (Double.parseDouble(distanceTf.getText())==null)
剩下的就好了。
我尝试将它放在if语句之外并使用distanceTf.getText()。equals("") 在if语句中,但这也不起作用。
我无法找到如何为双重代码行分配空值。
我知道null
,.equals
或""
无法工作。
答案 0 :(得分:1)
你不清楚哪个值可能为null,所以我会假设两者。
由于Double.parseDouble
需要非空参数,因此您需要检查null
。
if(null != distanceTf.getText() && Double.parseDouble(distanceTf.getText()) != 0.0)
stageTf.getText()
也可以返回null
,但如果您确保将已知的非空字符串与null
进行比较,则会返回false。所以,这种比较更安全:
if("".equals(stageTf.getText())
答案 1 :(得分:0)
要理解的重要一点是:您对null
值的含义是什么?空引用还是空字符串?
你可以做到
stageTf.getText().isEmpty()
检查字符串是否为空,只有在包含某些内容时才解析它。
// here remember it's still wrong
if (!stageTf.getText().isEmpty() && Double.parseDouble(distanceTf.getText()) == null) {
第二个问题:Double.parseDouble不返回null,因为它返回一个本机类型..如果出错,它会抛出异常。所以你可以捕获NumberFormatException。
然后你可以写:
try {
double result;
if (!stageTf.getText().isEmpty() && (result = Double.parseDouble(distanceTf.getText()))) {
/* i think you need the result of the conversion, so i saved it in result */
}
}
catch (NumberFormatException e) { /* something went wrong! */ }
答案 2 :(得分:0)
您需要首先测试该字段是否为空。你在stageTf字段的第一个条件下正确完成了。您需要对distanceTF字段执行相同的操作。这意味着嵌套条件语句。
if(stageTF.getText().equals(""))
if(distanceTF.getText().equals("")){
/* ... */
} else {
//here it is safe to test for exceptions by using a try/catch
try{
//here you can parse the string to your Double
}catch(NumberFormatException nfe){ /* ... */ }
}
答案 3 :(得分:0)
首先,你应该在空前检查null,因为如果值为null,你将在第一个上得到NullPointerException。
其次,如果Double.parseDouble
上的distanceTf.getText()为null,您将获得NullPointerException
Double.parseDouble() doc
我要做的是创建一个方法验证如下:
private boolean validate(String field){ //where field = stageIf.getText() for example
if(field != null && field.trim().length() > 0)
return true;
else return false;
}
答案 4 :(得分:-1)
解析if语句,然后只比较:
if(distanceTf.getText() == "")