回答編集履歴
4
メソッド名修正、結果追加
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
インデント修正
test
CHANGED
@@ -80,15 +80,15 @@
|
|
80
80
|
}
|
81
81
|
|
82
82
|
public int getPrice() { return price; }
|
83
|
-
|
83
|
+
public int getStock() { return stock; }
|
84
84
|
|
85
|
-
|
85
|
+
public void decrementStock() { --stock; }
|
86
86
|
|
87
|
-
|
87
|
+
abstract String formatting(String format);
|
88
|
-
|
88
|
+
protected String preformatString(String str, int len) {
|
89
|
-
|
89
|
+
while(str.length() < len) str += " ";
|
90
|
-
|
90
|
+
return str;
|
91
|
-
|
91
|
+
}
|
92
92
|
}
|
93
93
|
|
94
94
|
class CD extends Item {
|
2
コード追加
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
追加
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
|
その他、あちこち変な個所があります。
|