支店一覧ファイルと売上報告ファイル(支店ごと複数個)の
2種類のデータファイルが同じフォルダ内にまとまっており、
その2データファイル内に記載の支店コードをキーとして
"uriage"という一つのCSVファイルに纏めて出力したいのですが、
売上の出力結果が下記に添付している通り”0”になってしまいます。
キーの指定間違いかと思いましたが違わなそうなのでどこが原因なのか、
ご教示いただけると助かります。
(拙いコードだとは思いますが、まずは自分の力でとりあえずでも動くものを作りたいので
あくまでもアドバイス程度で大きく変更はしないでいただけると助かります。。。)
****売上報告フォルダ****
【支店一覧ファイル】
<shiten>
001,大阪
002,山口
003,福岡
004,東京
005,静岡
【売上報告ファイル】
<000001.rcd>
001
43000000
<000002.rcd>
002
65400000
<000003.rcd>
003
120000
<000004.rcd>
004
5789000
****************
Java
1public class Sales { 2 public static void main(String args[]) { 3 4 HashMap<String, String> branchName = new HashMap<String, String>(); 5 HashMap<String,Long> branchEarnings = new HashMap<String, Long>(); 6 BufferedReader br = null; 7 8 //1,支店定義ファイルの読み込み 9 try { 10 File file = new File(args[0], "shiten"); 11 FileReader filereader = new FileReader(file); 12 br = new BufferedReader(filereader); 13 14 String line; 15 while((line = br.readLine()) != null) { 16 for(int i = 0; i < 2; i++) { 17 String[] box = line.split(","); 18 branchName.put(box[0], box[1]); 19 branchEarnings.put(box[0], (long)0); 20 } 21 System.out.println(line); 22 } 23 } catch(IOException e) { 24 System.out.println("予期せぬエラーが発生しました"); 25 } finally { 26 if(br != null) { 27 try { 28 br.close(); 29 } catch(IOException e) { 30 System.out.println("予期せぬエラーが発生しました"); 31 } 32 } 33 } 34 35 36 //2.売上ファイルの読み込み 37 try { 38 File f = new File(args[0]); 39 File[] list = f.listFiles(); 40 for(int i = 0; i < list.length; i++) { 41 if(list[i].getName().matches("[0-9]{6}.rcd")) { 42 43 BufferedReader b = new BufferedReader(new FileReader(list[i])); 44 System.out.println(b.readLine()); 45 String[] box = b.readLine().split("\n"); 46 Long Salce = Long.valueOf(box[0]); 47 branchEarnings.put(box[0], Salce); 48 System.out.println(branchEarnings.get(box[0])); 49 } else { 50 System.out.println(""); 51 } 52 } 53 } catch(IOException e) { 54 System.out.println(""); 55 56 } finally { 57 if(br != null) { 58 try { 59 br.close(); 60 System.out.println(""); 61 } 62 } 63 } 64 65 //集計 66 try { 67 File outFile = new File(args[0], "uriage"); 68 BufferedWriter fw = new BufferedWriter(new FileWriter(outFile)); 69 70 for(Map.Entry<String, String> entry : branchName.entrySet()) { 71 72 fw.write(entry.getKey() + "," + entry.getValue() + "," + branchEarnings.get(entry.getKey())); 73 fw.newLine(); 74 } 75 fw.close(); 76 } catch(IOException e) { 77 e.printStackTrace(); 78 System.out.println(""); 79 } finally { 80 if(br != null) { 81 try { 82 br.close(); 83 } catch(IOException e) { 84 System.out.println(""); 85 } 86 } 87 } 88 } 89}
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー