我正在使用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++))
这里是屏幕截图:
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9lMWZBNC5wbmcifQ==” alt =“截图”>
如果此行:
for (int i = 0; i < b.length; i++)
引发NPE,只有一种可能的解释。 b
是null
。
您可以通过在for
语句之前添加此语句来证明(或反对)。
System.out.println("b is " + b);
一旦确认,您需要倒退以弄清楚为什么此时b
是null
。根据您显示给我们的代码,我无法提供任何见解。
它在我的代码中正常工作,在处理它为null之前检查b。
if(b!=null)
{
for (int i = 0; i < b.length; i++)
{
s.append(Integer.toString((b[i] & 0xff) + 0x100,16).substring(1));
}
}
尝试在长度后加上(),如下:
for(int i = 0; i