我正在使用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。请帮助
答案 0 :(得分:5)
您的getStudentID
函数正在返回静态计数器而不是实例变量。
public long getStudentID() {
return nextID;
}
应该是:
public long getStudentID() {
return studentID;
}
此外,在构造函数中,您定义了一个名为studentID
的参数,该参数隐藏了同名的实例字段,因此当您执行此操作时:
studentID=nextID;
您正在为参数指定一个值,然后在方法结束时将其丢弃。您应该删除参数,因为您在类中跟踪ID,您不需要将其传入。您还可以将其更改为this.studentID
:this
显式引用实例字段。
答案 1 :(得分:0)
您的getStudentID
方法返回了错误的值。它应该返回studentID
字段,而不是静态nextID
字段。
像这样:
public long getStudentID(){
return this.studentID;
}
答案 2 :(得分:0)
使用此:this.studentID=nextID;
代替studentID=nextID;