Java readOrders和fill ArrayList
我正在尝试读取如下数据文件: 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 我的问题主要是我的问题。我必须使用一个方法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.正常秩序 另一个非常类似
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();
//.....