我有一个带有抽象类“订单”的程序,其中三个不同的类实现了它,当我用硬编码的订单测试它时,程序中的所有内容都运行良好。
这是抽象类:
public abstract class Order {
protected String location;
protected double price;
public Order(double price, String location){
this.price = price;
this.location = location;
}
public abstract double calculateBill();
public String getLocation() {
return location;
}
public double getPrice() {
return price;
}
public abstract String printOrder(String format);
}
这是供参考的实现类之一
public class NonProfitOrder extends Order {
public NonProfitOrder(double price, String location) {
super(price, location);
}
public double calculateBill() {
return getPrice();
}
public String printOrder(String format){
String Long = "Non-Profit Order" + "\nLocation: " + getLocation() + "\nTotal Price: " + getPrice();
String Short = "Non-Profit Order-Location: " + getLocation() + ", " + "Total Price: " + getPrice();
if (format.equals("Long")){
return Long;
}
else{
return Short;
}
}
}
到目前为止,这是我为测试人员所拥有的,我知道这是错误的并且非常混乱,但请放轻松。我一直在四处寻找工作,但没有运气。
public static ArrayList<Order> readOrders (String fileName) throws FileNotFoundException{
String type;
Scanner s = new Scanner(new File("orders.txt"));
ArrayList<Order> orders = new ArrayList<Order>();
while (s.hasNext()){
type = s.nextLine();
}
switch(type) {
case 1: type = NonProfitOrder();
break;
case 2: type = RegularOrder();
break;
case 3: type = OverseasOrder();
return orders;
}
}
我需要读取的数据文件如下所示:
N 1000.0 NY
R 2000.0 CA 0.09
R 500.0 GA 0.07
N 2000.0 WY
O 3000.0 Japan 0.11 20.0
N 555.50 CA
O 3300.0 Ecuador 0.03 30.0
R 600.0 NC 0.06
首先我在读取文件时遇到问题,我知道我需要一个循环来将数据添加到 arrayList,但我不确定如何。在一种方法中读取和循环所有内容的最简单方法是什么?如果可能的话。
我更新以添加一些我拥有的 switch 语句,但它不起作用。我是否需要使用带有 N、O、R 的东西来匹配文件,而不是案例 1、2、3,而我在修复错误“类型不匹配”时遇到了麻烦。