java如何为存储在ArrayList中的特定属性设置值?
我在一个名为 所有动物。 每个对象有4个属性,例如Animal(02,“tiger”,270.0,16)//ID、name、weight、age
我让用户使用switch语句从5个不同的选项中进行选择。每种情况有四种,第五种情况允许用户更改每个属性
在每个箱子里面,我都有一个扫描仪来获取他的输入(比如名字),然后我试着使用所有的动物。集合(i,名称)//我需要索引
我犯了个错误。(不兼容类型:java.lang.String无法转换为Animal)
我在考虑将每个属性存储到变量中,将要更改的属性除外,然后从列表中删除动物,然后使用新属性将其添加回
例如,如果用户想要更改名称。 将ID、重量、年龄存储到变量中 所有动物。删除(i) 所有动物。添加(新动物(02,用户输入,270.0,16)
但我不认为这是有效的
我还想在Animal类中添加一些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));
}
# 1 楼答案
无需重写对象,只需按id获取所需对象,并直接或通过setter更改其中的字段即可
# 2 楼答案
下面给出了如何更改索引处动物的名称:
i
:其中
scanner
是Scanner
的对象setName
是属性的public
setter方法name
注意:不应为每个输入创建新的
Scanner
对象。删除所有Scanner
实例化,并仅在创建菜单的方法开头创建一个实例,例如Scanner scanner = new Scanner(System.in);
。然后,可以对方法内的所有输入重用scanner