【发布时间】:2015-03-27 20:42:15
【问题描述】:
好吧,我通常不会写这种问题,但即使在检查之后:
Java, check whether a string is not null and not empty? 和 Checking if a string is empty or null in 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
}
【问题讨论】:
-
你试过调试吗?如果您收到 NullPointerException,则可能 sSPA 或 sSPE 为 null。