前提・実現したいこと
コンパイルをかけて、以下のように表示させたいのですが、うまくいきません。
"{
A001: {ロールケーキ, 130},
A002: {生どら焼, 150},
A003: {手包みクレープ, 210}
}"
一番初めに載せているWork320Testのコードをどうにかしないといけないことはわかっているのですが、わかりません。
発生している問題・エラーメッセージ
どれも生どら焼きと150になってしまいます。
{
A001:{生どら焼き, 150},
A002:{生どら焼き, 150},
A003:{生どら焼き, 150},
}
該当のソースコード
java
1import java.util.ArrayList; 2import java.util.Collections; 3import java.util.HashMap; 4import java.util.List; 5import java.util.Map; 6 7public class Work320Test { 8 public static void main(String[] args) { 9 Work320 work320 = new Work320(); 10 // createRecordMap 11 System.out.println("[createRecordMap]"); 12 Map<String, ProductBean> mapCRM = new HashMap<String, ProductBean>(); 13 String[][][][] keyValuesCRM = { 14 null, 15 { 16 { { "A001" }, {"ロールケーキ", "130" }, }, 17 { { "A002" }, {"生どら焼き", "150" }, }, 18 { { "A003" }, {"手包みクレープ", "210" }, }, 19 }, 20 {}, 21 }; 22 for (int j = 0; j < keyValuesCRM.length; j++) { 23 System.out.println("\nケースNo," + (j + 1)); 24 try { 25 mapCRM = work320.createRecordMap(keyValuesCRM[j]); 26 if (mapCRM.size() != 0) { 27 System.out.println("{"); 28 List<String> sortedKeysCRM = new ArrayList(mapCRM.keySet()); 29 Collections.sort(sortedKeysCRM); 30 for (String key : sortedKeysCRM) { 31 System.out.println(key + ":" + "{" + mapCRM.get(key).getName() + ",\t" + mapCRM.get(key).getPrice() + "},"); 32 } 33 System.out.println("}"); 34 System.out.println(""); 35 //test 36 for (String key : mapCRM.keySet()) { //Mapは表示ランダム 37 System.out.println(key + "\n" + mapCRM.get(key).getName() + "\n" + mapCRM.get(key).getPrice()); 38 } 39 } else { 40 System.out.println("{}"); 41 } 42 } catch (IllegalArgumentException e) { 43 System.out.println(e.getMessage()); 44 System.out.println(""); 45 } 46 } 47 48 } 49} 50
import java.math.BigDecimal; /** * 商品レコードクラス */ public class ProductBean { /** 商品コード */ private String code; /** 商品名 */ private String name; /** 売価 */ private BigDecimal price; /** * コンストラクタ */ public ProductBean(){}; /** * コンストラクタ * @param code 商品コード * @param name 商品名 * @param price 売価 */ public ProductBean(String code, String name, BigDecimal price){ } /** * 商品コードを取得 * @return 商品コード */ public String getCode() { return code; } /** * 商品コードを設定 * @param code 商品コード */ public void setCode(String code) { this.code = code; } /** * 商品名を取得 * @return 商品名 */ public String getName() { return name; } /** * 商品名を設定 * @param name 商品名 */ public void setName(String name) { this.name = name; } /** * 売価を設定 * @return 売価 */ public BigDecimal getPrice() { return price; } /** * 売価を取得 * @param price */ public void setPrice(BigDecimal price) { this.price = price; } /** * 商品コードクラス情報を文字列で返却 */ public String toString(){ return "code == " + code + " name == " + name + " price == " + price; } /** * 商品コードクラス情報を表示 */ public void show(){ System.out.println(toString()); } }
import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; public class Work320 { public Map<String, ProductBean> createRecordMap(String[][][] keyValues) throws IllegalArgumentException { if (keyValues == null) { throw new IllegalArgumentException("引数がnullです。"); } Map<String, ProductBean> map = new HashMap<String, ProductBean>(); for (int i = 0; i < keyValues.length; i++) { String code = keyValues[1][0][0]; String name = keyValues[1][1][0]; BigDecimal price = new BigDecimal(keyValues[1][1][1]); ProductBean pb = new ProductBean(); pb.setCode(code); pb.setName(name); pb.setPrice(price); map.put(keyValues[i][0][0], pb); } return map; } }
試したこと
Work320TestのProductBean pb = new ProductBean();を書いたりもしたんですが、
うまくいきません。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。