我使用append()
类的StringBuilder
方法遇到了一个奇怪的问题;这是方法:
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;
}
需要一个字节数组并将其转换为StringBuilder
(同时执行其他操作)。
一切似乎都没问题,当我运行程序时,它打印出正确的结果,但也显示NullPointerException
不允许我继续使用该程序;异常指向第四行
(for (int i = 0; i < b.length; i++))
以下是截图:
答案 0 :(得分:5)
如果这一行:
for (int i = 0; i < b.length; i++)
抛出一个NPE,只有一个可能的解释。 b
为null
。
您可以通过在for
声明之前立即添加此声明来证明(或反驳)此声明。
System.out.println("b is " + b);
确认后,您需要向后工作以确定b
在此时为null
的原因。根据您向我们展示的代码,我无法提供任何见解。
答案 1 :(得分:0)
它在我的代码中正常工作,在将其处理为null之前检查b。
if(b!=null)
{
for (int i = 0; i < b.length; i++)
{
s.append(Integer.toString((b[i] & 0xff) + 0x100,16).substring(1));
}
}
答案 2 :(得分:0)
尝试在长度后添加()括号,如下所示:
for (int i = 0; i < b.length(); i++)
{