回答編集履歴
2
あれ?
test
CHANGED
@@ -203,3 +203,27 @@
|
|
203
203
|
|
204
204
|
|
205
205
|
ちなみに、全部愚直に書いても問題があるわけではありません。
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
---
|
210
|
+
|
211
|
+
単純に仕様が理解できていないだけ?
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
> ➀クーポン持参:10%0ff
|
216
|
+
|
217
|
+
➁平日割引:30%off
|
218
|
+
|
219
|
+
➂平日シニア割引(65歳以上):50%off
|
220
|
+
|
221
|
+
※2つ以上の割引サービスが重なった場合は、割引率が高い方が優先される。
|
222
|
+
|
223
|
+
|
224
|
+
|
225
|
+
の場合、クーポン持参で、平日で、60歳の人の割引率がどれになるか、わからない?
|
226
|
+
|
227
|
+
10%offと50%offで、どちらが割引率が高いか、わからない?
|
228
|
+
|
229
|
+
10%と10%offを同じものだと思っている?
|
1
こゆこと?
test
CHANGED
@@ -39,3 +39,167 @@
|
|
39
39
|
は、日本語の仕様を理解していただくか、
|
40
40
|
|
41
41
|
デシジョンテーブルの読み方を理解するしかないです。
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
---
|
46
|
+
|
47
|
+
ここから追記
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
こうゆうこと?
|
52
|
+
|
53
|
+
デシジョンテーブルを愚直に実装すると以下のようなif文になるはずで
|
54
|
+
|
55
|
+
```java
|
56
|
+
|
57
|
+
if(coupon == 'Y' && weekday == 'Y' && age >= 65) {
|
58
|
+
|
59
|
+
// ルール列1
|
60
|
+
|
61
|
+
sale = "50%OFF";
|
62
|
+
|
63
|
+
}else if(coupon == 'Y' && weekday == 'Y' && age < 65) {
|
64
|
+
|
65
|
+
// ルール列2
|
66
|
+
|
67
|
+
sale = "30%OFF";
|
68
|
+
|
69
|
+
}else if(coupon == 'Y' && weekday != 'Y' && age >= 65) {
|
70
|
+
|
71
|
+
// ルール列3
|
72
|
+
|
73
|
+
sale = "10%OFF";
|
74
|
+
|
75
|
+
}else if(coupon == 'Y' && weekday != 'Y' && age < 65) {
|
76
|
+
|
77
|
+
// ルール列4
|
78
|
+
|
79
|
+
sale = "10%OFF";
|
80
|
+
|
81
|
+
}else if(coupon != 'Y' && weekday == 'Y' && age >= 65) {
|
82
|
+
|
83
|
+
// ルール列5
|
84
|
+
|
85
|
+
sale = "50%OFF";
|
86
|
+
|
87
|
+
}else if(coupon != 'Y' && weekday == 'Y' && age < 65) {
|
88
|
+
|
89
|
+
// ルール列6
|
90
|
+
|
91
|
+
sale = "30%OFF";
|
92
|
+
|
93
|
+
}else if(coupon != 'Y' && weekday != 'Y' && age >= 65) {
|
94
|
+
|
95
|
+
// ルール列7
|
96
|
+
|
97
|
+
sale = "割引なし";
|
98
|
+
|
99
|
+
}else if(coupon != 'Y' && weekday != 'Y' && age > 65) {
|
100
|
+
|
101
|
+
// ルール列8
|
102
|
+
|
103
|
+
sale = "割引なし";
|
104
|
+
|
105
|
+
}
|
106
|
+
|
107
|
+
```
|
108
|
+
|
109
|
+
上記がなぜ、単純なif文になるかわからないってことかな。
|
110
|
+
|
111
|
+
```java
|
112
|
+
|
113
|
+
if(weekday =='Y' && age >=65){
|
114
|
+
|
115
|
+
sale="50%OFF";
|
116
|
+
|
117
|
+
} else if (weekday == 'Y'){
|
118
|
+
|
119
|
+
sale ='30%OFF";
|
120
|
+
|
121
|
+
} else if (coupon == 'Y'){
|
122
|
+
|
123
|
+
sale="10%OFF";
|
124
|
+
|
125
|
+
}
|
126
|
+
|
127
|
+
```
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
> ※2つ以上の割引サービスが重なった場合は、割引率が高い方が優先される。
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
なので、割引率の高い順に適用されるかを判定します。※ここが、わからない?(A)
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
50%の割引が適用されるルールは、列1と列5です。
|
140
|
+
|
141
|
+
if文で書くと
|
142
|
+
|
143
|
+
```java
|
144
|
+
|
145
|
+
if((coupon == 'Y' && weekday == 'Y' && age >= 65) ||
|
146
|
+
|
147
|
+
(coupon != 'Y' && weekday == 'Y' && age >= 65)){
|
148
|
+
|
149
|
+
```
|
150
|
+
|
151
|
+
coupon は、Yでもそれ以外でも、50%の割引率になることがわかるので ※ここが、わからない?(B)
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
```java
|
156
|
+
|
157
|
+
if(weekday == 'Y' && age >= 65) {
|
158
|
+
|
159
|
+
```
|
160
|
+
|
161
|
+
だけ判定すれば良い。※ここが、わからない?(C)
|
162
|
+
|
163
|
+
50%の割引が適用されない場合、次に割引率が高いのは、30%なので、同様に ※ここが、わからない?(D)
|
164
|
+
|
165
|
+
```java
|
166
|
+
|
167
|
+
}else if((coupon == 'Y' && weekday == 'Y' && age < 65) ||
|
168
|
+
|
169
|
+
(coupon != 'Y' && weekday == 'Y' && age < 65)) {
|
170
|
+
|
171
|
+
```
|
172
|
+
|
173
|
+
となります。
|
174
|
+
|
175
|
+
50%の割引のように考えると
|
176
|
+
|
177
|
+
```java
|
178
|
+
|
179
|
+
if(weekday == 'Y' && age < 65) {
|
180
|
+
|
181
|
+
```
|
182
|
+
|
183
|
+
と、なるのでは?と考えるかもしれませんが、`(weekday == 'Y' && age >= 65)`を事前にチェックしているので、
|
184
|
+
|
185
|
+
この分岐を通る場合 weekdayが'Y'でないか、age < 65 であるはずです。 ※ここが、わからない?(E)
|
186
|
+
|
187
|
+
※age < 65を書いてもよいですが不要な記述を一般的にはイヤがります
|
188
|
+
|
189
|
+
それであれば、weekdayがYかを判定すれば、ageの判定は不要です。
|
190
|
+
|
191
|
+
なぜかというと、
|
192
|
+
|
193
|
+
weekdayがYであれば、age < 65なので、30%の割引が適用される。(age >= 65 の場合、この分岐に入らない)
|
194
|
+
|
195
|
+
weekdayがYでなければ、10%の割引か、割引なし、なので次の割引率の判定を行う。
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
同様に、10%の割引を判定する場合、すでにweekdayの判定はしているので、
|
200
|
+
|
201
|
+
couponの判定のみ行えば10%割引か判定できます。※ここが、わからない?(F)
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
ちなみに、全部愚直に書いても問題があるわけではありません。
|