JAVA初心者です。
下記のような月額購入表を作成したいのですが中々完成に至らず困っています。
購入日,商品名,数量,単価,合計
20160101,チョコレート,3,100,300
20160102,アメ,10,10,100
201601月合計,,,,400
20160210,ガム,5,100,500
201602月合計,,,,500
内容は、商品マスタデータと購入明細データの商品コードを比較し一致したら、
尚且つ適用範囲内だったら、出力ファイルに購入明細と商品マスタにある必要な
データを抽出し出力するというものです。
【特にわからない点】
1、for文の2重ループで商品コードの比較を行いたいのですが、
リスト内のマップデータの抽出方法が分かりません。
2、月が変わったら合計を出す方法が上手くいきません。
3、商品コードを0001で表示させたいのに1になるのはなぜ?
解決方法をご存じの方、コード補整と共に簡単なご説明で構いませんのでお教え
いただけないでしょうか。
どうぞよろしくお願いいたします。
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.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class PuchaceRecord {
public static void main(String[] args) { BufferedReader brInputFileA= null ; //商品マスタ用入力ファイル BufferedReader brInputFileM= null ; //購入明細用入力ファイル BufferedWriter bwOutputFileA = null ; //月額購入表出力ファイル String stBufferM = ""; //inMファイルデータを格納 String stBufferA = ""; //inAファイルデータを格納 ArrayList<Map<String, Object>> stDataM = new ArrayList<Map<String, Object>>(); //商品マスタの入力データ ArrayList<Map<String, Object>> stDataA = new ArrayList<Map<String, Object>>(); //購入明細の入力データ Map<String,Object> mpDataM = new HashMap<String,Object>(); //商品マスタ用データ Map<String,Object> mpDataA = new HashMap<String,Object>(); //購入明細用データ 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.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.add(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(","); mpDataA.put("date",item2[0]); mpDataA.put("code",item2[1]); mpDataA.put("count",item2[2]); stDataA.add(mpDataA); for(int i= 0; i < stDataA.size();){ for(int j = 0; j < stDataM.size();){ if(){ //商品コード比較 if(){ //適用範囲内 月額購入表に出力 }else{ //商品名欄に適用範囲外の商品と出力 } }else{ break; } } } }//while brInputFileA.close(); bwOutputFileA.close(); }catch(FileNotFoundException e){ System.err.println("ファイルが見つかりません。"); }catch(IOException e){ System.err.println("何らかのエラーが発生しました。"); } }
}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/02 03:45