2014-08-27 67 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