首页 > 解决方案 > 根据迭代次数将字符串用户输入添加到数组列表中

问题描述

我正在开发一个 Java 项目,并且我的 Super 类具有私有属性。我使用从 Main 中的超类继承的访问器和修改器来设置和获取这些属性。我正在创建一个 for 循环来根据用户的 INT 号遍历输入。我被困在如何获取用户输入的名称并将其添加到循环内的 ArrayList 中,因此完成后我应该有 X 个名称。

        Scanner  input = new Scanner(System.in);
        ArrayList<String> animalList = new ArrayList<String>();
        //local variables
        char     choice;
        int      choice2;
        String   mInputN;
        String   mInputT;
        String   mInputG;
        int      mInputA;
        double   mInputW;
        String   mInputD;

        //user input if else statement for Y or N
        System.out.println("Would you like to add an animal? Y or N ");
        choice = input.next().toUpperCase().charAt(0);
        if (choice == 'Y')  {

            System.out.println("How many animals would you like to add?");
            choice2 = input.nextInt();

            for (i = 0; i < choice2; ++i)  {
                System.out.println("Enter new animal name: ");
                mInputN = input.next();

                System.out.println("Enter type of animal: ");
                mInputT = input.next();

                System.out.println("Enter gender of animal: ");
                mInputG = input.next();

                System.out.println("Enter age of animal: ");
                mInputA = input.nextInt();

                System.out.println("Enter weight of animal: ");
                mInputW = input.nextDouble();

                System.out.println("Date acquired (DD/MM/YYYY");
                mInputD = input.next();

                RescueAnimal animal[i] = new RescueAnimal();
                animal[i].setName(mInputN);
                animal[i].setType(mInputT);
                animal[i].setGender(mInputG);
                animal[i].setAge(mInputA);
                animal[i].setWeight(mInputW);
                animal[i].setAcquisitionDate(mInputD);

                animalList.add(mInputN);

                System.out.println(animal[i].getName() + ", Age: " + animal[i].getAge() + ", Gender: " + animal[i].getGender());
                System.out.print("Type: " + animal[i].getType() + ", ");
                System.out.print("Weight: " + animal[i].getWeight() + ", ");
                System.out.println("Acquisition Date: " + animal[i].getAcquisitionDate());
                System.out.println();

                System.out.println(animalList);
            }

标签: javafor-looparraylistiteration

解决方案


好吧,如果您只是要这样做,System.out.println(animalList);那么您只会获得一个内存位置,而不是该列表中的实际内容;所以我个人所做的是在用户输入并完成循环之后,将此代码写在第一个 for 循环之外。它是一个 for each 循环:(删除最后一个System.out.println();

for(String i : animalList){
System.out.println(i);
}

或者你也可以这样做:

for(int i = 0; i < animalList.length; i++){
System.out.println(animalList[i]);
}

在您完成打印动物的信息后,请执行以下操作:

 System.out.println("Acquisition Date: " + animal[i].getAcquisitionDate() + "\n);

代替:

System.out.println("Acquisition Date: " + animal[i].getAcquisitionDate());
System.out.println();

推荐阅读