目的是能够将包含与库存水平有关的信息的文本文件中的数据读取到对象中,然后以各种方式操作该对象,文本文件中的字段由“#”分隔。文本文件在一行上有 3 个字段或在一行上有 5 个字段。带有 3 个字段的行进入我的超类的构造函数 带有 5 个字段的行读入子类
超类称为 StockItem,子类称为 StockItemFood,它扩展 StockItem(超类)。
下面是我的代码,在一个单独的“Manager”类中找到,该类从文本文件中读取到 StockItem 对象数组中。很简单。
public void readFromText() throws IOException, FileNotFoundException{
String [] temp;
BufferedReader br = new BufferedReader (new FileReader("stocklist.txt"));
String line = br.readLine();
while(line!=null){
temp=line.split("#");
if (temp.length==3){
s[counter]=new StockItem(temp[0], (double) Integer.parseInt(temp[1]), temp[3]);
}else if (temp.length==5){
s[counter]=new StockItemFood(temp[0], (double) Integer.parseInt(temp[1]), temp[2], (double) Integer.parseInt(temp[3]), (double) Integer.parseInt(temp[4]));
}
}
counter++;
br.close();
}
在下面的方法中,我试图返回一个字符串,该字符串将与从超类中返回的方法和从子类中的方法返回相连接。但是,当我键入 s[y] 时,我看不到我的子类方法。如下所示。
public String getOrderingList(){
String toOrder="";
for(int y = 0; y < s.length; y++){
toOrder+=s[y].getDescription() + s[y].//getOrderAmount() <-subclass method
}
}
return toOrderl
}
下面是我的子类的代码:
public class StockItemFood extends StockItem {
private double min,max; //3.2
public StockItemFood(String description, double quantity, String units,double min, double max) { //3.3
super(description, quantity, units);
this.min = min;
this.max=max;
}
public boolean mustOrder(){ //3.4
boolean b;
if(getQuantity()<min){
b=true;
} else {
b=false;
}
return b;
}
public double getOrderAmount(){ //3.5
double amount = max-getQuantity();
return amount;
}
}
我想也许可以使用 instanceof,但我并不完全确定所需的语法,而且我还阅读了几篇建议避免使用 instanceof 的帖子。
任何帮助将非常感激。- 肖恩