回答編集履歴

4

メソッド名修正、結果追加

2022/01/27 08:28

投稿

jimbe
jimbe

スコア12648

test CHANGED
@@ -32,7 +32,7 @@
32
32
  private static void showAssortment(Shop shop) {
33
33
  System.out.println("CODE\tタイトル\t\t価格\t在庫\t監督/アーティスト");
34
34
  System.out.println("--------------------------------------------------------------");
35
- shop.showItem("%s %-8s %4d円 %4d個 %s");
35
+ shop.showItems("%s %-8s %4d円 %4d個 %s");
36
36
  System.out.println("--------------------------------------------------------------");
37
37
  }
38
38
  }
@@ -47,7 +47,7 @@
47
47
  }
48
48
 
49
49
  //itemsに登録されている商品情報を全て画面に表示する
50
- public void showItem(String format) {
50
+ public void showItems(String format) {
51
51
  for(Item item : items) System.out.println(item.formatting(format));
52
52
  }
53
53
 
@@ -119,3 +119,23 @@
119
119
  }
120
120
  }
121
121
  ```
122
+ ```plain
123
+ CODE タイトル 価格 在庫 監督/アーティスト
124
+ --------------------------------------------------------------
125
+ V0001 ローマの休日  2980円 6個 ウィリアム・ワイラー
126
+ V0002 風と共に去りぬ 2980円 5個 ヴィクター・フレミング
127
+ C0001 ビートルズ全集 3000円 1個 ビートルズ
128
+ C0002 スリラー    2500円 9個 マイケル・ジャクソン
129
+ --------------------------------------------------------------
130
+
131
+ ローマの休日を2980円で販売しました
132
+ スリラーを2500円で販売しました
133
+
134
+ CODE タイトル 価格 在庫 監督/アーティスト
135
+ --------------------------------------------------------------
136
+ V0001 ローマの休日  2980円 5個 ウィリアム・ワイラー
137
+ V0002 風と共に去りぬ 2980円 5個 ヴィクター・フレミング
138
+ C0001 ビートルズ全集 3000円 1個 ビートルズ
139
+ C0002 スリラー    2500円 8個 マイケル・ジャクソン
140
+ --------------------------------------------------------------
141
+ ```

3

インデント修正

2022/01/27 08:26

投稿

jimbe
jimbe

スコア12648

test CHANGED
@@ -80,15 +80,15 @@
80
80
  }
81
81
 
82
82
  public int getPrice() { return price; }
83
- public int getStock() { return stock; }
83
+ public int getStock() { return stock; }
84
84
 
85
- public void decrementStock() { --stock; }
85
+ public void decrementStock() { --stock; }
86
86
 
87
- abstract String formatting(String format);
87
+ abstract String formatting(String format);
88
- protected String preformatString(String str, int len) {
88
+ protected String preformatString(String str, int len) {
89
- while(str.length() < len) str += " ";
89
+ while(str.length() < len) str += " ";
90
- return str;
90
+ return str;
91
- }
91
+ }
92
92
  }
93
93
 
94
94
  class CD extends Item {

2

コード追加

2022/01/27 08:23

投稿

jimbe
jimbe

スコア12648

test CHANGED
@@ -3,6 +3,119 @@
3
3
  "商品情報" は Item クラスのことだと思います。
4
4
  ArrayList<Item> とし、 addItem メソッドはパラメータの item をそのまま items に add する必要があります。
5
5
  showItem も「itemsに登録されている商品情報を全て画面に表示する」なら items の内容をループ等で表示する必要があると思います。
6
- Item のフィールドが static では意味がありません。
6
+ Item のフィールドが static では意味がありません。
7
7
 
8
+ ---
9
+
10
+ ```java
8
- その他、あちこち変な個所があります。
11
+ import java.util.*;
12
+
13
+ public class Main {
14
+ public static void main(String[] args) {
15
+ Shop shop = new Shop();
16
+
17
+ shop.addItem(new Video("V0001","ローマの休日",2980,6,"ウィリアム・ワイラー"));
18
+ shop.addItem(new Video("V0002","風と共に去りぬ",2980,5,"ヴィクター・フレミング"));
19
+ shop.addItem(new CD("C0001","ビートルズ全集",3000,1,"ビートルズ"));
20
+ shop.addItem(new CD("C0002","スリラー",2500,9,"マイケル・ジャクソン"));
21
+
22
+ showAssortment(shop);
23
+
24
+ System.out.println();
25
+ shop.sellItem("V0001");
26
+ shop.sellItem("C0002");
27
+ System.out.println();
28
+
29
+ showAssortment(shop);
30
+ }
31
+
32
+ private static void showAssortment(Shop shop) {
33
+ System.out.println("CODE\tタイトル\t\t価格\t在庫\t監督/アーティスト");
34
+ System.out.println("--------------------------------------------------------------");
35
+ shop.showItem("%s %-8s %4d円 %4d個 %s");
36
+ System.out.println("--------------------------------------------------------------");
37
+ }
38
+ }
39
+
40
+ class Shop {
41
+ private List<Item> items = new ArrayList<>(); //商品情報を格納するリスト
42
+
43
+ //商品情報をitemsに登録する
44
+ public void addItem(Item item) {
45
+ items.add(item);
46
+ //System.out.println("アイテムサイズ "+items.size());
47
+ }
48
+
49
+ //itemsに登録されている商品情報を全て画面に表示する
50
+ public void showItem(String format) {
51
+ for(Item item : items) System.out.println(item.formatting(format));
52
+ }
53
+
54
+ //itemsに登録されている商品情報から該当する商品を検索しメッセージを表示する
55
+ public void sellItem(String itemID) {
56
+ Item item = getItem(itemID);
57
+ if(item == null) return; //無効な id なら無視
58
+ System.out.println(item.name+ "を" + item.getPrice() + "円で販売しました");
59
+ item.decrementStock();
60
+ }
61
+
62
+ private Item getItem(String id) {
63
+ for(Item item : items) if(item.id.equals(id)) return item;
64
+ return null; //無かった
65
+ }
66
+ }
67
+
68
+ abstract class Item {
69
+ final String id; //商品ID
70
+ final String name; //商品名
71
+ protected int price; //値段
72
+ protected int stock; //在庫数
73
+
74
+ //コンストラクタ
75
+ public Item(String id, String name, int price, int stock) {
76
+ this.id = id;
77
+ this.name = name;
78
+ this.price = price;
79
+ this.stock = stock;
80
+ }
81
+
82
+ public int getPrice() { return price; }
83
+ public int getStock() { return stock; }
84
+
85
+ public void decrementStock() { --stock; }
86
+
87
+ abstract String formatting(String format);
88
+ protected String preformatString(String str, int len) {
89
+ while(str.length() < len) str += " ";
90
+ return str;
91
+ }
92
+ }
93
+
94
+ class CD extends Item {
95
+ private String artist; //アーティスト名
96
+
97
+ public CD(String id, String name, int price, int stock, String artist) {
98
+ super(id, name, price, stock);
99
+ this.artist = artist;
100
+ }
101
+
102
+ @Override
103
+ public String formatting(String format) {
104
+ return String.format(format, id, preformatString(name,7), price, stock, artist);
105
+ }
106
+ }
107
+
108
+ class Video extends Item {
109
+ private String movieDirector; //監督名
110
+
111
+ public Video(String id, String name, int price, int stock, String movieDirector) {
112
+ super(id, name, price, stock);
113
+ this.movieDirector = movieDirector;
114
+ }
115
+
116
+ @Override
117
+ public String formatting(String format) {
118
+ return String.format(format, id, preformatString(name,7), price, stock, movieDirector);
119
+ }
120
+ }
121
+ ```

1

追加

2022/01/27 07:20

投稿

jimbe
jimbe

スコア12648

test CHANGED
@@ -3,5 +3,6 @@
3
3
  "商品情報" は Item クラスのことだと思います。
4
4
  ArrayList<Item> とし、 addItem メソッドはパラメータの item をそのまま items に add する必要があります。
5
5
  showItem も「itemsに登録されている商品情報を全て画面に表示する」なら items の内容をループ等で表示する必要があると思います。
6
+ Item のフィールドが static では意味がありません。
6
7
 
7
8
  その他、あちこち変な個所があります。