Java Lab 9.18 工厂信息

问题描述 投票:0回答:1

我无法将用户输入的字符串解析为字符串数组,以便将唯一的响应存储到 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 文件没有发布,因为这些文件已经为您完成了。如果您认为这将有助于解决我的问题,请告诉我,我也会发布该信息。

java arraylist while-loop split abstract-class
1个回答
0
投票

你错过了这些:

myGarden.add(new Flower()); myGarden.add(new Plant());

© www.soinside.com 2019 - 2024. All rights reserved.