我的課程注冊專案應該有很多方法,如(添加課程)、(添加導師)等。(添加學生())是其中一種方法,我想知道如何更改變數(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 ;
}
我想知道我做錯了什么還是什么?
如果每個物件都用相同的變數宣告,它會將每個創建的物件的資料克隆到新創建的物件嗎?
謝謝。
uj5u.com熱心網友回復:
我想知道我做錯了什么還是什么?如果每個物件都用相同的變數宣告,它會將每個創建的物件的資料克隆到新創建的物件嗎?
每次呼叫時,new Student您都在創建一個新物件。然后,您將對物件的參考分配給變數。請注意,變數不包含物件。它只包含一個參考(或指標)。
您的代碼中沒有進行“克隆”。并且不會覆寫前一個Student物件。
然而。
您的addstudent()方法顯然應該添加aStudent到某些東西。它沒有這樣做。它實際上只是創建Student物件并將它們的參考分配給區域變數。當方法回傳時,區域變數超出范圍,Student無法再訪問物件。
因此,我想將變數更改為 , 等的任何
std1建議std2。
您需要使用一個Student[]或一個List<Student>或一些其他資料結構來保存對所有學生的參考。
(使用std1,std2等變數不是解決方案。Java 不支持動態變數。即使在支持它們的語言中,這也可能不是一個好的解決方案!)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/483556.html
