Java readOrders和fill ArrayList

Java readOrders和fill ArrayList,java,arraylist,readfile,Java,Arraylist,Readfile,我正在尝试读取如下数据文件: 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 2.正常秩序 另一个非常类似

我正在尝试读取如下数据文件:

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 2.正常秩序 另一个非常类似于RegularOrder

我的问题主要是我的问题。我必须使用一个方法
readOrders(文件名:string):ArrayList

publicstaticarraylistreadorders(字符串文件名)抛出FileNotFoundException{
字符串类型;
扫描仪s=新扫描仪(新文件(“orders.txt”);
ArrayList orders=新的ArrayList();
而(s.hasNext()){
type=s.nextLine();
}
开关(类型){
案例1:类型=非专业人员();
打破
案例2:类型=RegularOrder();
打破
案例3:类型=OverseasOrder();
退货订单;
}
}

我不知道该怎么做,就像上面说的那样

无法将readOrders解析为类型

以及第一批
读订单的其他问题


我用一种开关状态更新了我的代码,但这种状态不起作用。我应该使用N、O、R来代替案例1、2、3,还是应该如何引用每种类型的订单?此外,我有“类型不匹配”错误,但我无法修复它。

您没有正确初始化ArrayList和read orders方法。这里的代码不正确,方法在
之后结束和不执行任何操作,其余无效

ArrayList<Order> readOrders (String fileName); {
    ArrayList<Order> orders2 = new readOrders("orders.txt");
}
然后在你的主要方法

public static void main(String[] args) {
     ArrayList<Order> loadedOrders = readOrders("orders.txt");
     //... rest of your code
}
然后,在阅读时,根据您需要对顺序执行的操作,您可能需要使用
instanceof
和cast。但是,如果在基类中声明了方法,并且只在子类中重写它们,那么当您从列表中读取时,首先在子类中查找该方法,如果未找到该方法,则在基类中查找该方法,然后如果该方法不在基类中,则显然会出现错误。这意味着有一个抽象基类是有用的,这意味着可以避免这样做

Order ord = orders.get(anIndex)

if(ord instanceof NonProfitOrder)
    ((NonProfitOrder)ord).aNonprofitOrderSpecificMethod()
else if (ord instanceof RegularOrder())
    ((RegularOrder)ord).aRegularOrderSpecificMethod();
//.....

arraylistorders2=newreadorders(“orders.txt”)?如果你的函数返回数组列表,那就行了,
readOrders
方法在哪里?我删除了'new',我错把它放在那里了。readOrders方法是我的问题,我不知道如何编写它。我的UML将其作为readOrders(文件名:string):ArrayList。然而,当我写它时,比如“publicArrayList readOrders(stringfilename)”,我得到了参数readOrders的非法修饰符;“只允许使用final”并且似乎无法修复它可能与您之前的问题类似。好吧,这很有意义,除了一个问题,我该如何区分不同的类型?猜测一下:数据文件中的第一个字母似乎与它的顺序类型有关是的,它是,所以我需要所有三种类型的if语句?是的,或者因为它是一个字符,您可以使用
开关
Ok,每次使用开关引用时都会遇到问题。我是否需要一个变量来引用的每个类型或实例?
ArrayList<Order> readOrders (String fileName); {
    ArrayList<Order> orders2 = new readOrders("orders.txt");
}
public static ArrayList<Order> readOrders (String fileName){
     ArrayList<Order> orders = new ArrayList<Order>();
     //Read in lines from your file
     //Decide which type of order it is and create it
     //Add it to the list
     //Repeat until end of file
     return orders
}
public static void main(String[] args) {
     ArrayList<Order> loadedOrders = readOrders("orders.txt");
     //... rest of your code
}
char firstChar =  //Read in the first character of the line from the file
Order anOrder;
switch(firstChar)
{
    case 'N':
       anOrder = new NonProfitOrder();  //adding arguments to construtor as needed
       break;
    case 'R':
       anOrder = new RegularOrder();
       break;
    default:
       anOrder = new Order();
       break;
 }
 loadedOrders.add(anOrder);
Order ord = orders.get(anIndex)

if(ord instanceof NonProfitOrder)
    ((NonProfitOrder)ord).aNonprofitOrderSpecificMethod()
else if (ord instanceof RegularOrder())
    ((RegularOrder)ord).aRegularOrderSpecificMethod();
//.....