在EclipseJava中获取空点异常
当我尝试在student类中调用在EclipseJava中获取空点异常,java,eclipse,class,nullpointerexception,Java,Eclipse,Class,Nullpointerexception,当我尝试在student类中调用AddGrade方法,该方法在Grades类中使用AddGrade时,我得到一个NullPointerException。 它说我必须添加更多的细节,我不知道为什么 一班是 public class Grades { private double qualPts; private int numCreds; public Grades() { } /** * Returns the GPA */ public double getGPA() {
AddGrade
方法,该方法在Grades类中使用AddGrade
时,我得到一个NullPointerException
。
它说我必须添加更多的细节,我不知道为什么
一班是
public class Grades {
private double qualPts;
private int numCreds;
public Grades() {
}
/**
* Returns the GPA
*/
public double getGPA()
{
if (numCreds>0)
return qualPts/numCreds;
return 0;
}
/**
* Adds the new grade's credits
* Weights the newly added grade
*/
public void addGrade(int creds, double grade)
{
numCreds+=creds;
qualPts+=creds*grade;
}
/**
* Returns the number of credits
*/
public int getNumCred()
{
return numCreds;
}
}
第二班是
Public class Student
{
private String name;
private String bNumber;
private Grades grades;
public Student(String name, String bNumber) {
this.name=name;
this.bNumber=bNumber;
}
/**
* adds the new grade's credits
* weights the new grade
*/
public void addGrade(int creds, double grade)
{
grades.addGrade(creds,grade);
}
}从未实例化等级。你可以在申报单上这样做 Grades是一个类(引用类型),值类型(也称为原语:int、bool、long等)不需要实例化。字符串是引用类型,但编译器允许您以与声明值类型类似的方式声明它们。如果你写了一个类,你必须调用它的一个构造函数,如果你想使用它
public class Student
{
private String name;
private String bNumber;
private Grades grades = new Grades();
public Student(String name, String bNumber) {
this.name=name;
this.bNumber=bNumber;
}
/**
* adds the new grade's credits
* weights the new grade
*/
public void addGrade(int creds, double grade)
{
grades.addGrade(creds,grade);
}
}
在Student类的构造函数中,需要创建Grades的实例
public Student(String name, String bNumber) {
this.name=name;
this.bNumber=bNumber;
this.grades = new Grades();
}
否则,
此.grades
为空,因为它从未设置为另一个值。一个问题可能是您没有初始化Grade类中的两个变量,而是使用了numcles+=creds和qualPts+=creds*Grade
public void addGrade(int creds, double grade)
{
numCreds+=creds;
qualPts+=creds*grade;
}
查看
学生成绩
。仔细地看它。你昨天也问过这个问题。另外,看看如何使用调试器和遍历代码,了解它是如何工作的。除此之外,当你询问得到的异常时,你应该始终附加完整的堆栈跟踪。这些字段是基本字段。它们不会导致空指针异常。