2014-04-03 178 views
0

我需要查看文本字段是否有空值。我需要看看是否将整数与空值进行比较

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语句之外,并在if语句中使用distanceTf.getText()。equals(“”) ,但这也不起作用。

我只是不知道如何分配一个空值的双线代码行。

我知道null,.equals""不起作用。

回答

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! */ } 
1

你不是在值可能为空清楚,所以我会认为这两者。

由于Double.parseDouble需要一个非空的说法,你需要检查它null

if(null != distanceTf.getText() && Double.parseDouble(distanceTf.getText()) != 0.0) 

stageTf.getText()可以返回null太多,但如果你对保证向null被比较已知非空字符串,它会返回false。所以,这种比较是安全的:

if("".equals(stageTf.getText()) 
+0

你会使用'更安全” ” .equals(stageTf.getText())' – Bart

+0

感谢您的。 – Makoto

-1

解析之外,如果statment,那么就比较:

if(distanceTf.getText() == "") 
+0

你不能比较像这样的字符串。使用'.equals()' – Bart

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){ /* ... */ } 
    } 
+0

你会使用' “” 更安全.equals(distanceTF.getText())' – Bart

+1

你真的不应该测试的是一个'通过捕捉一个'NullPointerException' null'。例外应仅在实际上是特殊情况下使用,并且从OP的问题的容貌,一个'null'应该并不罕见。 – AJMansfield

+0

同意,这就是为什么我编辑我的例子 – Alan

0

首先,您应该在空之前检查空值,因为如果值为空,您将在第一个空值上得到NullPointerException。 其次,你会得到一个NullPointerException如果distanceTf.getText()是在Double.parseDouble 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; 
}