JAVA初心者です。
下記のような月額購入表を作成したいのですが、出力時に商品名の値と単価の値が全て同じと
なってしまう原因はなぜでしょうか?
商品コードの比較はできているようなんですが、想定する出力内容になりません。
ご回答よろしくお願いします。
【完成例】
購入日,商品名,数量,単価,合計
20160101,チョコレート,3,100,300
20160102,アメ,10,10,100
201601月合計,,,,400
20160210,ガム,5,100,500
201602月合計,,,,500
【現時点】
購入日,商品名,数量,単価,合計
20160101,ガム,5,100
20160102,ガム,5,10
20160210,ガム,5,100
package sample; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.HashMap; public class PuchaceRecord { public static void main(String[] args) { BufferedReader brInputFileA= null ; //商品マスタ用入力ファイル BufferedReader brInputFileM= null ; //購入明細用入力ファイル BufferedWriter bwOutputFileA = null ; //月額購入表出力ファイル String stBufferM = ""; String stBufferA = ""; HashMap<String,HashMap<String,Object>> stDataM = new HashMap<String,HashMap<String,Object>>() ; //商品マスタの入力データを格納 HashMap<String, Object> mpDataM = null; Object date = ""; //購入明細ファイルの購入月をセット boolean isFirst = true; //0番目の購入日をセットする為の変数 try{ brInputFileA = new BufferedReader(new InputStreamReader(new FileInputStream("C:/Users/temp/Desktop/inA.csv"),"JISAutoDetect")); brInputFileM = new BufferedReader(new InputStreamReader(new FileInputStream("C:/Users/temp/Desktop/inM.csv"),"JISAutoDetect")); //inMファイルデータを読み込み while((stBufferM = brInputFileM.readLine()) != null){ String[] item = stBufferM.split(","); mpDataM = new HashMap<String,Object>(); mpDataM.put("code",item[0]); mpDataM.put("name",item[1]); mpDataM.put("price",item[2]); mpDataM.put("bigin",item[3]); mpDataM.put("end",item[4]); stDataM.put(item[0],mpDataM); }//while bwOutputFileA = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:/Users/temp/Desktop/outA.csv"),"SJIS")); while((stBufferA = brInputFileA.readLine()) != null){ String[] item2 = stBufferA.split(","); if(isFirst){ date = item2[0].substring(0, 6); isFirst = false; } if(stDataM.containsKey(item2[1])){ String a = item2[0]; Object b = mpDataM.get("name"); String c = item2[2]; Object d = mpDataM.get("price"); bwOutputFileA.write(a + ","); bwOutputFileA.write(b + ","); bwOutputFileA.write(c + ","); bwOutputFileA.write(d + ","); bwOutputFileA.newLine(); } }//while brInputFileA.close(); bwOutputFileA.close(); }catch(FileNotFoundException e){ System.err.println("ファイルが見つかりません。"); }catch(IOException e){ System.err.println("何らかのエラーが発生しました。"); } } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/02 04:33
2016/03/02 04:43
2016/03/02 04:44
2016/03/02 06:25
2016/03/02 07:33
2016/03/02 08:58
2016/03/02 09:48 編集
2016/03/02 10:40