Java 即使字符串中有数据,也会在打印时不断显示null
我在这段代码中生成一个字符串,然后对其应用一个子字符串Java 即使字符串中有数据,也会在打印时不断显示null,java,arrays,string,null,Java,Arrays,String,Null,我在这段代码中生成一个字符串,然后对其应用一个子字符串 String input = "AnyString" for(int i = 0; i < input.length(); i++) //i tracks which line we are on when printing the triangle { int tracker = 0; for(int j = 0; j < line.length(); j++) //j track
String input = "AnyString"
for(int i = 0; i < input.length(); i++)
//i tracks which line we are on when printing the triangle
{
int tracker = 0;
for(int j = 0; j < line.length(); j++)
//j tracks which "column of the line" we are currently on
{
if(i + 1 == input.length()
//If we are on the the last line of the triangle
|| Math.abs(j - line.length()/2) == i)
//or if the column we are on is i letters away from the center
{
outputs[i] += line.charAt(j);
out.println("Outputs has been updated with:\n"+line.charAt(i));
out.println("\nAnd it is now:\n"+outputs[i]);
tracker = j;
//tracker will keep track of what the position of the last letter was
}else{
out.println("Outputs has been updated with: a space");
out.println("\nAnd it is now: "+outputs[i]);
outputs[i] += " ";
}
}
//Where the substring is applied
}
String input=“AnyString”
对于(int i=0;i
当它为第一个循环运行时,输出为:
输出已更新为:一个空格
现在为:null
知道为什么在打印之前我在空格中添加了字符串,但字符串却表示为空吗?我刚刚注意到,在输出上,在它表示null之前有一个空格。现在,我将声明从字符串中删除null这个词,但是如果有人能建议一个不那么迟钝的解决方案,我将不胜感激
谢谢大家的时间和关注 打印输出来自
else
分支
else
上方没有设置了outputs[i]
的代码路径,因此其值为null
在print语句中或在输出[i]+=''处没有得到NullPointerException
因为这两个语句处理空值的方式有一个怪癖
println
和串联总是对其参数执行String.valueOf()
。在这两种情况下,空字符串值都会变成字符串“null”
什么是输入和行?可能是因为output[]被初始化得太大,而现在您正试图检索从未应用于该特定索引的元素数据。使用调试器查看正在进行的操作。您的代码在打印后添加一个空格,而不是像消息所说的那样在打印前添加。当时,它打印空值,因为输出[i]还没有赋值。。。“使用调试器查看正在发生的事情。”-。。。。或者只是仔细阅读代码,从代码实际执行的操作而不是您希望它执行的操作的角度来检查代码。字符串“现在是:
以空格结尾。如果没有空格,它将是,而现在是:“
。所以“:”
和“null”
之间的空格来自,它是:“
部分,而不是输出[i]
部分。@meriton你当然是对的。我太粗心了:-(我会修正它。(Thx)我想我基本上理解了:因为我没有给它一个值,它默认为null?我想给它添加一个值,比如“”,会使它删除null,因为它会更新以意识到它不再为null。谢谢!