检查字符串是否为空或空,有时为空



好吧,我通常不会写这种问题,但即使在检查之后:

Java,检查字符串是否为空

和不为空?和检查字符串在Java中是空还是空。

我的程序创建一个PDF,其中包含原始合同和修改后合同中已更改的信息,但仅包含这些信息。如果两个合同中的信息相同,则不会绘制。但如果不是,那么它就会画出来。

当两份合同中都有某些内容时,例如票据,我没有问题。

如果在原始合同上他们没有写任何东西,但他们在修改(背书(上写了任何东西,那么系统不应该绘制任何注释字段。如果他们写了一些东西并在修改时删除它,也是如此。这就是问题所在。

当我尝试比较时:

if ((sSPA.getNotes() == null ||
     sSPA.getNotes().length() == 0) &&
    (sSPE.getNotes() != null ||
     sSPE.getNotes().length() != 0)) {
    //Some stuff here
}

我也试过

if ((sSPA.getNotes() == null ||
     sSPA.getNotes().equals("")) &&
    (sSPE.getNotes() != null ||
     !sSPE.getNotes().equals(""))) {
    //Some stuff here
}

if ((sSPA.getNotes() == null ||
     sSPA.getNotes().isEmpty()) &&
    (sSPE.getNotes() != null ||
     !sSPE.getNotes().isEmpty())) {
    //Some stuff here
}

我在登录执行时收到以下错误:

java.lang.NullPointerException
at com.dnhr.rwa.server.document.PdfEndorsement.renderSubscriptionSubmissionProp(PdfEndorsement.java:1545)

我知道这是因为字段null,我试图获取它的长度,或者将其与空字符串进行比较,并且它正在尝试这样做:

if (null.equals("")) {,并且抛出与length()方法相同的异常。

如果我尝试这样做:

if ((sSPA.getNotes() == null ||
     getStringValue(sSPA.getNotes().equals(""))) &&
    (sSPE.getNotes() != null ||
     !getStringValue(sSPE.getNotes().equals("")))) {
    //Some stuff here
}

它在编译时返回以下错误:

[javac] /home/efrain/proyectos/rwa-test/trunk/src/com/dnhr/rwa/server/document/PdfEndorsement.java:1541: error: bad operand types for binary operator '||'
[javac]     if ((sSPA.getNotes() == null ||
[javac]                                       ^
[javac]   first type:  boolean
[javac]   second type: String

有没有其他方法可以比较字段是空还是空

以下是我如何比较 3 种可能性的示例:

if((sSPA.getNotes() == null || sSPA.getNotes().trim().equals("")) &&
    (sSPE.getNotes() != null || !sSPE.getNotes().equals(""))) {
    //some stuff
} else if(!getStringValue(sSPA.getNotes()).
      equals(getStringValue(sSPE.getNotes())) &&
      (sSPE.getNotes() == null || 
       sSPE.getNotes().trim().equals(""))) {
        //some stuff
} else if(!getStringValue(sSPA.getNotes()).
      equals(getStringValue(sSPE.getNotes()))) {
        //some stuff
}

有没有其他方法可以比较字段是空还是空

您可以简单地使用如下所示的帮助程序方法:

static boolean nullOrEmpty(Stirng s) {
  return s == null || s.isEmpty();
}

这将使您的代码更具可读性。

只要写

if( sSPA.getNotes() == null ||
    (sSPA.getNotes() != null && sSPA.getNotes().isEmpty()) ... 

情况 1:sSPA.getNotes(( 为空第一个表达式的计算结果为 true。因此,如果案件正在执行

情况 2:sSPA.getNotes(( 不为空,而是为空第一个表达式为假,第二个表达式被计算。因为 sSPA 不为 null,所以第一个子表达式会传递,sSPA.getNotes.isEmpty(( 返回 true。整体表达式为 true -> if 案例被执行。

情况 2:sSPA.getNotes(( 不为空也不为空每个表达式的计算结果都为 false,但 != 空情况除外。总的来说,完整的条件是假的 -> if 案例没有被执行。

我认为检查空指针的最佳选择是

if(sSPA.getNotes()!=null && sSPA.getNotes().trim().length()>0){
}else{
//null
}

相关内容

  • 没有找到相关文章

最新更新