所以我基本上完成了一个程序,最后我将字符串从一个数组打印到一个文件。数组可能包含空值,所以我在打印之前检查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语句中正在发生这种情况。为什么会这样?
答案 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]);
}
}