append()导致java.lang.NullPointerException

append()导致java.lang.NullPointerException,java,nullpointerexception,stringbuilder,Java,Nullpointerexception,Stringbuilder,我在使用StringBuilder类的append()方法时遇到了一个奇怪的问题;方法如下: public StringBuilder toStringBuilder(byte[] b) { StringBuilder s = new StringBuilder(); for (int i = 0; i < b.length; i++) { s.append(Integer.toString((b[i] & 0xff) +

我在使用
StringBuilder
类的
append()
方法时遇到了一个奇怪的问题;方法如下:

public StringBuilder toStringBuilder(byte[] b)
{
    StringBuilder s = new StringBuilder();
    for (int i = 0; i < b.length; i++) 
        {
            s.append(Integer.toString((b[i] & 0xff) + 0x100,16).substring(1));
        }
    System.out.println(s);
    return s;
}
以下是一个屏幕截图:


它在我的代码中工作正常,在处理它之前检查b是否为空

if(b!=null)
{
for (int i = 0; i < b.length; i++) 
        {
            s.append(Integer.toString((b[i] & 0xff) + 0x100,16).substring(1));
        }
}
如果(b!=null)
{
for(int i=0;i
它在我的代码中工作正常,在处理它之前检查b是否为空

if(b!=null)
{
for (int i = 0; i < b.length; i++) 
        {
            s.append(Integer.toString((b[i] & 0xff) + 0x100,16).substring(1));
        }
}
如果(b!=null)
{
for(int i=0;i
如果此行:

for (int i = 0; i < b.length; i++) 
一旦您确认了这一点,您就需要反向工作,以找出
b
在该点为
null
的原因。基于您向我们展示的代码,我无法提供任何见解。

如果这一行:

for (int i = 0; i < b.length; i++) 
一旦您确认了这一点,您就需要反向工作,以找出
b
在该点为
null
的原因。根据您向我们展示的代码,我无法提供任何见解。

请尝试在长度后添加()括号,如下所示:

for (int i = 0; i < b.length(); i++) 
        {
for(int i=0;i
尝试在长度后添加()括号,如下所示:

for (int i = 0; i < b.length(); i++) 
        {
for(int i=0;i
在该位置唯一可以为null的是
b
。检查方法的调用方…b不是null…下面是调用:String out[]=new String[2];out[0]=toStringBuilder(message)。toString();其中消息是由16个元素组成的字节数组;这是一个打印:4-5281-12226-28110-74-11251-103041224117@tenik堆栈跟踪中的错误位于第165行:
for(int i=0;i==>
b
为空。您正在将
消息
传递给
b
。这里,
消息
,导致
b
。好吧……它似乎不是空的,在那个地方唯一可以为空的是
b
。检查方法的调用方……b不是空的……这是call:String out[]=new String[2];out[0]=toStringBuilder(message).toString();其中message是由16个元素组成的字节数组;这里有一个打印:4-5281-12226-28110-74-11251-103041224117@tenik堆栈跟踪中的错误位于第165行:
for(int i=0;i
==>
b
为空。您正在将
消息
传递给
b
。此处,
消息
,导致
b
。嗯……它似乎不是空的