“处理”;java.lang.NullPointerException“;

“处理”;java.lang.NullPointerException“;,java,nullpointerexception,Java,Nullpointerexception,所以我第一次学习Java。下面的代码在另一个类中调用square.toString()时抛出NullPointer异常(其中square是该类中定义的对象的实例),我有点不明白为什么这不起作用。有人能给我解释一下吗 公共类生成器{ 线盒; 字符串[]部分; 最终专用字符串字符串字符串=“---”; 最终私有字符串collumn=“|”; 私有整数大小; 公共SquareBuilder(int firstSize) { 大小=第一个大小; } 公共静态字符串repeatString(字符串s,in

所以我第一次学习Java。下面的代码在另一个类中调用
square.toString()
时抛出
NullPointer
异常(其中square是该类中定义的对象的实例),我有点不明白为什么这不起作用。有人能给我解释一下吗

公共类生成器{
线盒;
字符串[]部分;
最终专用字符串字符串字符串=“---”;
最终私有字符串collumn=“|”;
私有整数大小;
公共SquareBuilder(int firstSize)
{
大小=第一个大小;
}
公共静态字符串repeatString(字符串s,int n)
{   
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
不清楚为什么您声明了一个名为
parts
的实例变量,然后在
toString()
中取消引用(
parts[0]=…
)-但您从未初始化它,因此该值为
null
。。。因此有例外

为什么您的实施不仅仅是:

public String toString( )
{
    String ends = repeatString(beam,size) + "\n";
    String middle = collumn + repeatString(" ",4*size-2) + collumn + "\n";
    return ends + middle + ends;
}

toString()

中修改对象是非常不寻常的,因为您的问题没有正确框定,但是我猜您在toString()方法中得到了NPE。原因是您从未真正初始化数组
String[]部分在您的代码中

您必须首先对其进行初始化:

public SquareBuilder(int firstSize)
{
    size = firstSize;
    this.parts = new int[give the size here];

}

当您尝试对空对象使用方法时,会出现NullPointerException。您应该在构造函数中使用表达式初始化
部分
数组

parts=新字符串[您想要什么版本]


我不清楚你在用这个阵列做什么

你的异常的完整堆栈跟踪是什么?我的大脑中有数组是出于某种原因,显然没有理由使用它们。谢谢