在EclipseJava中获取空点异常

在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() {

当我尝试在student类中调用
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;
 }

查看
学生成绩
。仔细地看它。你昨天也问过这个问题。另外,看看如何使用调试器和遍历代码,了解它是如何工作的。除此之外,当你询问得到的异常时,你应该始终附加完整的堆栈跟踪。这些字段是基本字段。它们不会导致空指针异常。