!array [0] .isEmpty()返回NullPointer?

时间:2014-11-18 09:14:09

标签: java android nullpointerexception

这是我的代码:

if (!quizDescs[0].isEmpty()) {
    mDescText.setText(quizDescs[0]);
} else {
    mDescText.setVisibility(View.INVISIBLE);
}

因此,当这段代码运行,并且if条件返回true时,一切都很好,但是,如果它返回false,则表示存在NullPointerException,并指向包含if语句的代码行。 / p>

我检查条件对吗?为什么它会返回NullPointer?!

解答:

    if (quizDescs[0] == null) {
       mDescText.setVisibility(View.INVISIBLE);
    } else {
       mDescText.setText(quizDescs[0]);
    }

4 个答案:

答案 0 :(得分:2)

如果quizDesc [0]是String,则可以执行

if(!StringUtility.isEmptyOrNull(quizDesc[0])){
 mDescText.setText(quizDescs[0]);
}else {
    mDescText.setVisibility(View.INVISIBLE);
}
顺便说一下,  空和空是不一样的

考虑

String s; //Initialize to null
String a =""; //A blank string

使用

始终是一个好习惯
try{
   //Your code here..
}catch(Exception e){
    e.printStacktrace();
}

答案 1 :(得分:1)

如果quizDescsquizDescs[0]为空,您将获得NullPointerException

显然,如果isEmpty()返回false,则表示isEmpty()已执行,因此当条件返回true时quizDescs[0]不为空,这就是它的工作原理。

要么确保quizDescsquizDescs[0]都不为空,要么将条件更改为:

if (quizDescs != null && quizDescs[0] != null && !quizDescs[0].isEmpty()) {
    ....
} else {
    ....
}

答案 2 :(得分:0)

您有一个错误,因为quizDescs为空,所以当您尝试在条件中获取quizDescs[0]时,您会尝试获取第一个null对象项。

答案 3 :(得分:0)

if-line导致NullPointerException的唯一可能方式是quizDescs本身为null或第一个元素quizDescs [0]为null。尝试将quizDescs提取到本地变量中以进行调试,并检查其内容。

您可以使用空字符串初始化数组或添加null检查 - 或者更好地检查逻辑如何null是可能的条件。通常应该避免使用空值(对于类似的情况,请参阅Bloch, Effective Java 2nd Edition, item 43)。