将整数与空值进行比较

时间:2014-04-03 16:15:40

标签: java

我需要查看文本字段是否为空值。我需要看看是否

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""无法工作。

5 个答案:

答案 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() == "")