问题描述
.csv 中的文件包含一系列正确的文本行。每个奇数行包含一个集合 由分号分隔的值,对应于超类或子类的单个对象,具体取决于行中的值编号。每个偶数行包含一个工作日的购买,由前一个奇数行定义。类和子类都取自工厂。我需要:
- 将 in.csv 文件的内容加载到地图中,其中购买是关键 最后 购买 的 工作日 是
- 打印
- 将 in.csv 文件的内容加载到地图中,其中购买是关键 第一 次 购买 的 工作日 是 一个 价值 ;
- 打印 每个 周期
输入数据示例:
bread;155;1;20
MONDAY
milk;131;2
SUNDAY
bread;154;3
FRIDAY
bread;155;5
SUNDAY
potato;80;2;10
FRIDAY
butter;270;1
SUNDAY
butter;241;1;50
WednESDAY
meat;800;2;90
THURSDAY
potato;80;5;10
THURSDAY
milk;131;2
WednESDAY
bread;154;3
THURSDAY
bread;155;5
SUNDAY
meat;900;2;70
MONDAY
potato;80;2;10
MONDAY
public class Runner {
public static void main(String[] args) {
final String PACKAGE = "Task1/src/";
final String EXT = ".csv";
Scanner sc;
HashMap<Purchase,String>firstPurchaseMap = new HashMap<Purchase,String>();
HashMap<Purchase,String>lastPurchaseMap = new HashMap<Purchase,String>();
try{
sc = new Scanner(new FileReader(PACKAGE + args[0] + EXT));
while (sc.hasNextLine()){
String key = sc.nextLine();
String value = sc.nextLine();
Purchase purchase = PurchaseFactory.getClassFromFactory(key);
if(firstPurchaseMap.containsKey(purchase)){
int day1 = WeekDay.valueOf(value).ordinal();
int day2 = WeekDay.valueOf(firstPurchaseMap.get(purchase)).ordinal();
if (day1 < day2) {
String tmp = firstPurchaseMap.get(purchase);
removeItem(firstPurchaseMap,purchase);
firstPurchaseMap.put(purchase,value);
lastPurchaseMap.put(purchase,tmp);
} else {
lastPurchaseMap.put(purchase,value);
}
} else {
firstPurchaseMap.put(purchase,value);
}
} catch (FileNotFoundException e) {
System.out.println("file not found");
}
printMap(firstPurchaseMap);
System.out.println();
printMap(lastPurchaseMap);
System.out.println();
}
这就是我的结果(分别是第一张和第二张地图)
bread;1.55;1;0.20;1.35 = MONDAY
butter;2.70;1;2.70; = SUNDAY
butter;2.41;1;0.50;1.91 = WednESDAY
milk;1.31;2;2.62; = SUNDAY
meat;9.00;2;0.70;16.60 = MONDAY
bread;1.55;5;7.75; = SUNDAY
potato;0.80;2;0.10;1.40 = MONDAY
potato;0.80;5;0.10;3.50 = THURSDAY
bread;1.54;3;4.62; = THURSDAY
milk;1.31;2;2.62; = WednESDAY
meat;9.00;2;0.70;16.60 = THURSDAY
bread;1.55;5;7.75; = SUNDAY
potato;0.80;2;0.10;1.40 = FRIDAY
bread;1.54;3;4.62; = FRIDAY
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)