java - 根据迭代次数将字符串用户输入添加到数组列表中
问题描述
我正在开发一个 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);
}
解决方案
好吧,如果您只是要这样做,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();
推荐阅读
- python - 多维实现的交叉熵
- applescript - Automator 在下载时抛出错误,但下载仍然完成?
- r - 如何在 purrr::map()“列表或原子向量”参数的参数中引用变量索引?
- workbox - 如何使用 workbox-cli 实现“先缓存后网络”策略?
- xcode - 导入范围和下拉框
- jaxb - 如何使用 JAXB 编组/解组具有不同标签的抽象类
- bash - 'tee' 在什么情况下会删除它正在写入的文件?
- javascript - 从 React 中的 LocalStorage 刷新页面后保持语言首选项
- reactjs - React 子组件中的 API 数据渲染问题
- flutter - 使用 setstate 通过刷新按钮更新我的数据库更改