【问题标题】:Adding string user input into an array list based on how many iterations根据迭代次数将字符串用户输入添加到数组列表中
【发布时间】:2020-09-24 05:40:29
【问题描述】:

我正在开发一个 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);
            }

【问题讨论】:

  • 你在 for 循环之外尝试过System.out.println(animalList); 吗?
  • 您想将名称添加到AnimalList?您已经有了执行此操作的代码 (animalList.add(mInputn);)。
  • @BookOfZeus 是的,就是这样,谢谢你的帮助,我整天都在努力,到了一天结束时,我的大脑错过了最关键的部分。

标签: java for-loop arraylist iteration


【解决方案1】:

好吧,如果你只是要做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();

【讨论】:

    【解决方案2】:

    首先是代码。代码后的解释。

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    public class RescueAnimal {
        private String name;
        private String type;
        private String gender;
        private int age;
        private double weight;
        private String acquisitionDate;
    
        public String getName() {
            return name;
        }
    
        public String getType() {
            return type;
        }
    
        public String getGender() {
            return gender;
        }
    
        public int getAge() {
            return age;
        }
    
        public double getWeight() {
            return weight;
        }
    
        public String getAcquisitionDate() {
            return acquisitionDate;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setType(String type) {
            this.type = type;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public void setWeight(double weight) {
            this.weight = weight;
        }
    
        public void setAcquisitionDate(String acquisitionDate) {
            this.acquisitionDate = acquisitionDate;
        }
    
        public static void main(String[] args) {
            List<RescueAnimal> animalList = new ArrayList<>();
            Scanner input = new Scanner(System.in);
            System.out.println("Would you like to add an animal? Y or N ");
            char choice = input.nextLine().toUpperCase().charAt(0);
            if (choice == 'Y')  {
                System.out.println("How many animals would you like to add?");
                int choice2 = input.nextInt();
                input.nextLine();
                for (int i = 0; i < choice2; ++i)  {
                    System.out.println("Enter new animal name: ");
                    String mInputN = input.nextLine();
    
                    System.out.println("Enter type of animal: ");
                    String mInputT = input.nextLine();
    
                    System.out.println("Enter gender of animal: ");
                    String mInputG = input.nextLine();
    
                    System.out.println("Enter age of animal: ");
                    int mInputA = input.nextInt();
                    input.nextLine();
    
                    System.out.println("Enter weight of animal: ");
                    double mInputW = input.nextDouble();
                    input.nextLine();
    
                    System.out.println("Date acquired (DD/MM/YYYY");
                    String mInputD = input.nextLine();
    
                    RescueAnimal animal = new RescueAnimal();
                    animal.setName(mInputN);
                    animal.setType(mInputT);
                    animal.setGender(mInputG);
                    animal.setAge(mInputA);
                    animal.setWeight(mInputW);
                    animal.setAcquisitionDate(mInputD);
    
                    animalList.add(animal);
    
                    System.out.println(animal.getName() + ", Age: " + animal.getAge() + ", Gender: " + animal.getGender());
                    System.out.print("Type: " + animal.getType() + ", ");
                    System.out.print("Weight: " + animal.getWeight() + ", ");
                    System.out.println("Acquisition Date: " + animal.getAcquisitionDate());
                    System.out.println();
    
                    System.out.println(animalList.size());
                }
            }
        }
    }
    

    您要创建RescueAnimal 的列表,而不是String 的列表。
    你没有声明任何数组,所以你不需要[i]ArrayList 不是数组。
    您要做的就是根据用户输入的详细信息创建RescueAnimal 的实例,然后将该RescueAnimal 实例添加到您的列表中。

    【讨论】:

      猜你喜欢
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多