質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

1392閲覧

java;List<>を使用して表示がしたいのですが、うまく表示されません。

Java_beginner

総合スコア16

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/08/31 09:14

前提・実現したいこと

コンパイルをかけて、以下のように表示させたいのですが、うまくいきません。
"{
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();を書いたりもしたんですが、
うまくいきません。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決済み。
ずっとmainメソッド;Work320Testの仕様が悪いとおもっていましたが、
実際はWork320の下記が間違っていました。

誤;

java

1for (int i = 0; i < keyValues.length; i++) { 2 String code = keyValues[1][0][0]; 3 String name = keyValues[1][1][0]; 4 BigDecimal price = new BigDecimal(keyValues[1][1][1]); 5 ProductBean pb = new ProductBean(); 6 pb.setCode(code); 7 pb.setName(name); 8 pb.setPrice(price); 9 map.put(keyValues[i][0][0], pb);

正;

java

1for (int i = 0; i < keyValues.length; i++) { 2 String code = keyValues[i][0][0]; 3 String name = keyValues[i][1][0]; 4 BigDecimal price = new BigDecimal(keyValues[i][1][1]); 5 ProductBean pb = new ProductBean(); 6 pb.setCode(code); 7 pb.setName(name); 8 pb.setPrice(price); 9 map.put(keyValues[i][0][0], pb);

keyValues[1][0][0];
keyValues[1][1][0];
keyValues[1][1][1];

↓[1]になってるので[i]に変えました。

keyValues[i][0][0];
keyValues[i][1][0];
keyValues[i][1][1];

投稿2019/08/31 10:20

Java_beginner

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問