我无法将用户输入的字符串解析为字符串数组,以便将唯一的响应存储到 ArrayList 中。
用户输入这样的数据:
plant Spirea 10
flower Hydrangea 30 false lilac
flower Rose 6 false white
plant Mint 4
-1
-1 表示用户输入结束。
这里有提示:
给定一个 Plant 基类和一个 Flower 派生类,完成 main() 以创建一个名为 myGarden 的 ArrayList。 ArrayList 应该能够存储属于 Plant 类或 Flower 类的对象。创建一个名为 printArrayList() 的方法,该方法使用相应类中定义的 printInfo() 方法并打印 myGarden 中的每个元素。该程序应从输入中读取植物或花卉(以 -1 结尾),将每个植物或花卉添加到 myGarden ArrayList,并使用 printInfo() 方法输出 myGarden 中的每个元素。
下面是我当前的代码
import java.util.Scanner;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.lang.String;
public class PlantArrayListExample {
// TODO: Define a printArrayList method that prints an ArrayList of plant (or flower) objects
public static void printArrayList(ArrayList<Plant> myGarden) {
for (int i = 0; i < myGarden.size(); i++) {
myGarden.get(i).printInfo();
}
}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
String input;
// TODO: Declare an ArrayList called myGarden that can hold object of type plant
ArrayList<Plant> myGarden = new ArrayList<Plant>();
// TODO: Declare variables - plantName, plantCost, colorOfFlowers, isAnnual
String plantName;
String plantCost;
String colorOfFLowers;
boolean isAnnual;
input = scnr.next();
while(!input.equals("-1")){
String[] info = input.split(" ");
// TODO: Check if input is a plant or flower
// Store as a plant object or flower object
if (info[0].toLowerCase().equals("plant")) {
Plant p1 = new Plant();
p1.setPlantName(info[1]);
p1.setPlantCost(info[2]);
myGarden.add(p1);
}
else if (info[0].toLowerCase().equals("flower")) {
Flower f1 = new Flower();
f1.setPlantName(info[1]);
f1.setPlantCost(info[2]);
f1.setPlantType(Boolean.parseBoolean(info[3]));
f1.setColorOfFlowers(info[4]);
myGarden.add(f1);
}
else {
continue;
}
input = scnr.next();
}
// TODO: Call the method printArrayList to print myGarden
printArrayList(myGarden);
}
}
尝试使用 .split() 方法将字符串输入解析为数组。我能够成功地解析 while 循环之外的单个用户输入字符串,而不会出现任何问题。有两个 java 文件没有发布,因为这些文件已经为您完成了。如果您认为这将有助于解决我的问题,请告诉我,我也会发布该信息。
你错过了这些:
myGarden.add(new Flower()); myGarden.add(new Plant());