所以我是第一次学习 Java。当在另一个类中调用 square.toString()
时,下面的代码抛出一个 NullPointer
异常(其中 square 是这个类中定义的对象的一个实例),我'我有点不清楚为什么这不起作用。谁能给我解释一下?
public class SquareBuilder {
String box;
String[] parts;
final private String beam = "----";
final private String collumn = "|";
private int size;
public SquareBuilder(int firstSize)
{
size = firstSize;
}
public static String repeatString(String s, int n)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++)
{
sb.append(s);
}
return sb.toString();
}
public void changeSize(int newSize)
{
size = newSize;
}
public String toString( )
{
parts[0] = repeatString(beam,size) + "\n";
parts[1] = collumn + repeatString(" ",4*size-2) + collumn + "\n";
box = parts[0] + repeatString(parts[1],size-2) + parts[0];
return box;
}
}
最佳答案
不清楚您为什么声明一个名为 parts
的instance 变量,然后您取消引用该变量 (parts[0] = ...
)在 toString()
中 - 但您从未对其进行初始化,因此该值为 null
... 因此异常。
为什么您的实现不只是:
public String toString( )
{
String ends = repeatString(beam,size) + "\n";
String middle = collumn + repeatString(" ",4*size-2) + collumn + "\n";
return ends + middle + ends;
}
想要在 toString()
中修改对象是非常不寻常的。
关于java - 处理 "java.lang.NullPointerException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15179886/