有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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));
}

共 (2) 个答案

  1. # 1 楼答案

    无需重写对象,只需按id获取所需对象,并直接或通过setter更改其中的字段即可

  2. # 2 楼答案

    下面给出了如何更改索引处动物的名称:i

    System.out.print("Enter new name: ");
    String name = scanner.nextLine();
    Animal animal = allAnimals.get(i);
    animal.setName(name);
    allAnimals.set(i, animal);
    

    其中scannerScanner的对象setName是属性的publicsetter方法name

    注意:不应为每个输入创建新的Scanner对象。删除所有Scanner实例化,并仅在创建菜单的方法开头创建一个实例,例如Scanner scanner = new Scanner(System.in);。然后,可以对方法内的所有输入重用scanner