1

我正在使用 java 创建一个类,它是理解对象、方法等的基本类。无论如何,类名是 Student,它应该为每个新创建的对象分配一个学生 ID。学生 ID 从 1000000 开始并以 1 递增,因此每个新对象都应该让班级分配一个学生 ID,10000001、100000002 等。

public class Student {

 private static long nextID=10000000;
 private long studentID;
 //etc..

 public Student (String name, long studentID, int count, double total score) {
        totalScore=0;
        count=0;
        this.name=name;
        studentID=nextID;
        nextID++;

 }

 public long getStudentID() {
       return nextID;`
 }

但是,当我创建此类的对象时,学生 ID 一直为每个人提供相同的学号,10000000。请帮助

4

3 回答 3

5

您的getStudentID函数返回静态计数器而不是实例变量。

public long getStudentID() {
    return nextID;
}

应该:

public long getStudentID() {
    return studentID;
}

另外,在构造函数中,你定义了一个名为 的参数studentID,它隐藏了同名的实例字段,所以当你这样做时:

studentID=nextID;

您正在为参数分配一个值,然后在方法结束时将其丢弃。您应该删除该参数,因为您在类内跟踪 ID,所以不需要将其传递。您也可以将其更改为this.studentIDthis显式引用实例字段。

于 2013-09-24T03:28:40.030 回答
0

您的getStudentID方法返回错误的值。它应该返回studentID字段,而不是静态nextID字段。

像这样:

public long getStudentID(){
    return this.studentID;
}
于 2013-09-24T03:29:38.193 回答
0

使用这个:this.studentID=nextID;而不是studentID=nextID;

于 2013-09-24T03:30:09.977 回答