Java 试图调用toString()的NullPointerException

Java 试图调用toString()的NullPointerException,java,exception,Java,Exception,我已经完成了以下代码: Table tb; Exam[] examArr; int day, month, year, lengt; String subject, room; Date d; lengt = reader.nextInt(); examArr = new Exam[lengt]; for(int i = 0; i<testArr.length; i++) { System.out.println("Enter day, month, year.");

我已经完成了以下代码:

Table tb;
Exam[] examArr;
int day, month, year, lengt;
String subject, room;
Date d;
lengt = reader.nextInt();
examArr = new Exam[lengt];
for(int i = 0; i<testArr.length; i++)
{
     System.out.println("Enter day, month, year.");
     day = reader.nextInt();
     month = reader.nextInt();
     year = reader.nextInt();
     d = new Date(day, month, year);
     System.out.println("Enter subject.");
     subject = reader.next();
     examArr[i] = new Exam(subject, d);
}
System.out.println("Enter room.");
room = reader.next();
tb = new Table(room, examArr);
System.out.println(tb.toString());
程序标记行s+=arr[i].toString;黄色的。 考试的重头戏是

日期的字符串是


我想我正在提供所需的信息。

在调用对象的方法之前,始终检查对象是否为null

String s = "";
for(int i = 0; i<this.arr.length;i++)
{
 if(arr[i]!=null)
 s += arr[i].toString();
}
return s;
问题是:

System.out.println(tb.toString());

什么是表类,您不能为该类使用toString,因为tb变量为null

问题可能出在:

...

for(int i = 0; i<this.arr.length;i++)
{
     s += arr[i].toString();
}

...
当您遍历this.arr但使用arr[i].toString时
你所说的变化是指这个.arr[i].toString吗?还要检查数组是否包含Null以外的内容。

可能重复@VGR Nope。我读过这些。
String s = "";
for(int i = 0; i<this.arr.length;i++)
{
 if(arr[i]!=null)
 s += arr[i].toString();
}
return s;
System.out.println(tb.toString());
...

for(int i = 0; i<this.arr.length;i++)
{
     s += arr[i].toString();
}

...