【发布时间】:2013-09-12 01:34:07
【问题描述】:
我正在尝试读取这样的数据文件:
N 1000.0 纽约 R 2000.0 CA 0.09 R 500.0 GA 0.07 N 2000.0 怀俄明 O 3000.0 日本 0.11 20.0 N 555.50 加利福尼亚州 O 3300.0 厄瓜多尔 0.03 30.0 R 600.0 NC 0.06
并用它来填充一个arrayList
我的程序由一个抽象类和三个实现它的类组成:
1。非营利组织
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;
}
}
}
2。常规顺序
public class RegularOrder extends Order {
double taxRate;
public RegularOrder(double price, String location, double taxRate) {
super(price, location);
this.taxRate = taxRate;
}
private double calcTax() {
double tax;
tax = getPrice() * taxRate;
return tax;
}
public double calculateBill() {
double bill;
bill = price + calcTax();
return bill;
}
public String printOrder(String format){
String Long = "Regular Order" + "\nLocation: " + getLocation() + "\nPrice: " + getPrice() +
"\nTax: " + calcTax() + "\nTotal Price: " + calculateBill();
String Short = "Regular Order-Location: " + getLocation() + ", " + "Total Price: " + calculateBill();
if (format.equals("Long")){
return Long;
}
else{
return Short;
}
}
}
和另一个非常相似的RegularOrder
我的问题出在我的主要问题上。我必须使用方法readOrders(fileName:string):ArrayList<Order>
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;
}
}
我无法弄清楚如何正确执行此操作,因为它仍然说
readOrders 无法解析为类型。
以及第一个readOrders的其他问题。
我用某种开关状态更新了我的代码,但它不起作用。我应该使用 N、O、R 而不是案例 1、2、3,或者我将如何引用每种类型的订单?我也遇到了“类型不匹配”错误,但我无法修复它。
【问题讨论】:
-
ArrayList<Order> orders2 = new readOrders("orders.txt");这句话没有意义..我同意你的编译器 -
你只需要跳过
new吗?如果您的函数返回数组列表,那将起作用 -
readOrders方法在哪里?? -
我删除了我错误地放在那里的“新”。 readOrders 方法是我的问题,我不知道怎么写。我的 UML 有它作为 readOrders(fileName:string):ArrayList
。但是,当我编写诸如“public ArrayList readOrders(String fileName)”之类的内容时,我得到'Illegal modifier for parameter readOrders;只有 final 是允许的'并且似乎无法修复它 -
Reading from data file to fill ArrayList 的可能重复项与您之前的问题类似。