我的课程注册项目应该有很多方法,如(添加课程),(添加导师)等。(add student())是其中一种方法,我想知道如何在每次创建对象时更改变量(std)我不知道为什么每个对象都有相同的变量
有什么建议吗我想把变量改成std1 std2,像这样
public static void addstudent(){
int n=0;
System.out.println("enter your desired no. of students");
int count=in.nextInt();
while (n!=count){
int st=0;
System.out.println("Enter your first name");
String first=in.next();
System.out.println("Enter your middle name");
String middle=in.next();
System.out.println("Enter your last name");
String last =in.next();
System.out.println("Enter your blood type");
String blood=in.next();
System.out.println("Enter your phone number");
int phone=in.nextInt();
System.out.println("Enter your nationality");
String national=in.next();
System.out.println("Enter your year of birth");
int yearofbirth=in.nextInt();
Student std=new Student(first,middle,last,blood,phone,national,yearofbirth);
System.out.println("A student added successfully");
n++;
}
我想知道这是我做错了还是什么?
如果每个对象都用相同的变量声明,它会克隆每个创建对象的数据到新创建的对象?
和谢谢。
我想知道我做错了什么?如果每个对象都用相同的变量声明它会将每个已创建对象的数据克隆到新创建的对象?
每次调用new Student
时,都在创建一个新对象。然后将对对象的引用赋值给变量。注意,变量不包含对象。它只包含一个引用(或指针)。
没有"克隆"。在你的代码中进行。并且不能覆盖之前的Student
对象。
你的
addstudent()
方法显然应该添加aStudent
to something它并没有这样做。它实际上只是创建Student
对象并将其引用赋值给局部变量。当方法返回时,局部变量超出作用域,Student
对象不能再被访问。
所以,任何建议我想改变变量为
std1
,std2
,像这样。
你需要使用Student[]
或List<Student>
或其他数据结构来保存对所有学生的引用。
(使用std1
,std2
等变量不是解决方案。Java不支持动态变量。即使在支持它们的语言中,这也可能不是一个好的解决方案!)