![](/img/trans.png)
[英]How can I call a method of a specific object that is stored in an arraylist in Java?
[英]How can I set values to specific attributes stored inside of an ArrayList?
我在名為 allAnimals 的 ArrayList 中存儲了很多對象。 每個 object 有 4 個屬性 例如 Animal(02,"tiger",270.0,16) //ID,name,weight,age
我讓用戶使用 switch 語句從 5 個不同的選項中進行選擇。 每種情況有四種情況,第五種情況允許用戶更改每個屬性。
在每個案例中,我都有一個掃描儀來獲取他的輸入(例如姓名),然后我嘗試使用 allAnimals.set(i, name); //i 為索引
我得到了一個錯誤。 (不兼容類型:java.lang.String 無法轉換為 Animal)
我正在考慮將每個屬性存儲到變量中,除了將要更改的變量,然后從列表中刪除動物,然后將其與新屬性一起添加回來。
例如,如果用戶想更改名稱。 將 ID、體重、年齡存儲到變量 allAnimals.remove(i) allAnimals.add(new Animal(02, user_input, 270.0, 16);
但我不認為這是有效的。
我還想過在 Animal class 中添加一些 Setter 方法,但我不知道它是如何工作的。(或者它是否會工作)
如果我沒有解釋什么,我對此很抱歉。
這是我的一些代碼:
System.out.println("Choose what you want to change from the menu below.");
System.out.println("--------------------------------------------------");
System.out.println("1. Change only its ID.");
System.out.println("2. Change only its name.");
System.out.println("3. Change only its weight.");
System.out.println("4. Change only its age.");
System.out.println("5. Change everything.");
Scanner get_new_option = new Scanner(System.in);
int option = get_new_option.nextInt();
switch(option)
{
case 1:
//Haven't tried to change the ID cause I have to test that the given ID doesn't already exist within the ArrayList
System.out.println("Enter its ID.");
Scanner get_new_id = new Scanner(System.in);
int code = get_new_id.nextInt();
break;
case 2:
System.out.println("Enter its name.");
Scanner get_new_name = new Scanner(System.in);
String name = get_new_name.nextLine();
AllAnimals.set(i,name); //error here
break;
//case 3:
//break;
}
這里還有一種方法,我用它來初始化動物園中已經存在的 15 只動物。 我只是在我的 main 中調用該方法。
static ArrayList<Animal> AllAnimals = new ArrayList<Animal>();
static void InitAnimals()
{
AllAnimals.add(new Animal(1,"turtle",90,150));
AllAnimals.add(new Animal(2,"dolphine",80,17));
AllAnimals.add(new Animal(3,"crocodile",75,20));
AllAnimals.add(new Animal(4,"cheetah",120,20));
AllAnimals.add(new Animal (5,"tiger",200,20));
AllAnimals.add(new Animal(6,"owl",40,20));
AllAnimals.add(new Animal(7," bonobo",80,25));
AllAnimals.add(new Animal(8,"brown bear",450,24));
AllAnimals.add(new Animal(9,"anacoda",60,18));
AllAnimals.add(new Animal(10,"bald eagle",63,30));
AllAnimals.add(new Animal(12,"panda",200,24));
AllAnimals.add(new Animal(13,"jaguar",260,21));
AllAnimals.add(new Animal(14,"orangutan",430,26));
AllAnimals.add(new Animal(15,"shark",300,26));
}
無需重寫對象,只需通過 id 獲取您需要的 object 並直接更改其中的字段,或者例如通過 setter
下面給出了如何在索引i
處更改動物的名稱:
System.out.print("Enter new name: ");
String name = scanner.nextLine();
Animal animal = allAnimals.get(i);
animal.setName(name);
allAnimals.set(i, animal);
其中scanner
是Scanner
的 object , setName
是屬性name
的public
設置方法。
注意:您不應為每個輸入創建新的Scanner
object。 刪除所有Scanner
實例並僅創建一個實例,例如Scanner scanner = new Scanner(System.in);
在您創建菜單的方法的開頭。 然后,您可以對方法內的所有輸入重用scanner
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.