我不明白为什么这个简单的陈述不起作用

时间:2011-12-16 13:25:00

标签: java string null

所以我基本上完成了一个程序,最后我将字符串从一个数组打印到一个文件。数组可能包含空值,所以我在打印之前检查null,但是在文件的最后我一直以1为空...

这是我用来检查null

的代码
for(int i=0;i<array2.length;i++)
{
    if(array2[i] != null)
        out.println(array2[i]);
}

我知道数组包含多个null实例,但只打印了1个实例。我尝试使用调试器,当array2 [i] == null时,它仍然进入条件语句...

所以我添加了一个println语句来帮助我看看发生了什么。它现在看起来像这样:

for(int i=0;i<array2.length;i++)
        {
            if(array2[i] != null)
            {
                System.out.println("Adding " + array2[i]);
                out.println(array2[i]);
            }

在将所有String值打印到控制台之后,它会打印“Adding null”,所以我知道这个if语句中正在发生这种情况。为什么会这样?

2 个答案:

答案 0 :(得分:1)

调试器并不总是清楚它是否已进入if条件。我不相信这段代码会输入if条件,而且null可能来自另一行代码。

您可以将代码编写为

for(ElementType e: array2.length)
    if(e != null)
        out.println("[" + e+ ']'); // extra text for debugging.
// I suspect your `null` will still be on a line of its own

答案 1 :(得分:-2)

你是否也错过了if语句的一组括号?

for(int i=0;i<array2.length;i++) 
{ 
  if(array2[i] != null) 
  {
    out.println(array2[i]); 
  }
}