2014-08-27 37 views
0

我在一个文件中有一些购物商品,由“|”分隔。操作地图内的地图

Adam|grocery|veggies|100.00 
John|fuel|gasoline|42.60 
John|grocery|veggies|20.00 

销售税是8.75%。

  1. 查找每个客户的总收入。
  2. 对于每个客户,都会发现有多少支出去了哪个类别。
  3. 显示每个调查结果的销售税。

输出:

Total Revenue: 
Adam - $100.00 
John - $62.60 
Tax - 14.22 

Shopping by Adam: 
Grocery - $100.00 
Tax - $8.75 

Shopping by John: 
Fuel - 44.60 
Grocery - 20.00 
Tax - $5.47 

我阅读下面的代码的文件,然后用String创建HashMap为重点(以节省客户的名字)和值作为另一个HashMap(保存类别(名称类别作为关键和价格作为价值))

package test; 

import java.io.*; 
import java.util.*; 

public class GroceryStore { 

    public static void main(String[] args) { 
     try { 
      File inFile = new File("/Users/customers.txt"); 
      Scanner scan = new Scanner(inFile); 
      String lines = ""; 

      Map<String, HashMap<String, Double>> map = new HashMap<String, HashMap<String, Double>>(); 

      while (scan.hasNextLine()) { 
       lines = scan.nextLine(); 
       String[] wordSplit = lines.split("\\|"); 
       HashMap<String, Double> category = new HashMap<String, Double>(); 
       category.put(wordSplit[1], Double.parseDouble(wordSplit[3])); 
       map.put(wordSplit[0], category); 
      } 

      System.out.println("Total revenue by customer: "); 
      for (Map.Entry<String, HashMap<String, Double>> entry : map.entrySet()) { 
       System.out.println(entry.getKey() + " - " + entry.getValue()); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

但它不工作的方式,我想和不能继续。 在while循环的最后一步,当使用map.put时。这是用新购买取代该人购买的以前的条目。但我想要跟踪该人的所有购买条目。那么我们应该能够显示总产出和分类产出。

任何人都可以帮助这个,你可能有不同的方法?

+0

这听起来像一个作业问题 – smang 2014-08-27 22:00:16

+0

“它不工作” - 它怎么不工作?怎么了?怎么回事? – 2014-08-27 22:01:45

+0

此外 - 你会更好地发布全班,因为你提供了由于缺少大括号而具有各种语法错误。 – 2014-08-27 22:07:33

回答

0

这段代码没有经过测试,使用python的csv库将行存储在字典中,并将键作为第一列,在这种情况下是人名。

import csv 

data = {} 

with open('/Users/customers.txt', 'rb') as csvfile: 
    spamreader = csv.reader(csvfile, delimiter='|', quotechar='"') 
    for row in spamreader: 
     data[row[0]] = row 

    print data