回答編集履歴
2
あれ?
answer
CHANGED
@@ -100,4 +100,16 @@
|
|
100
100
|
同様に、10%の割引を判定する場合、すでにweekdayの判定はしているので、
|
101
101
|
couponの判定のみ行えば10%割引か判定できます。※ここが、わからない?(F)
|
102
102
|
|
103
|
-
ちなみに、全部愚直に書いても問題があるわけではありません。
|
103
|
+
ちなみに、全部愚直に書いても問題があるわけではありません。
|
104
|
+
|
105
|
+
---
|
106
|
+
単純に仕様が理解できていないだけ?
|
107
|
+
|
108
|
+
> ➀クーポン持参:10%0ff
|
109
|
+
➁平日割引:30%off
|
110
|
+
➂平日シニア割引(65歳以上):50%off
|
111
|
+
※2つ以上の割引サービスが重なった場合は、割引率が高い方が優先される。
|
112
|
+
|
113
|
+
の場合、クーポン持参で、平日で、60歳の人の割引率がどれになるか、わからない?
|
114
|
+
10%offと50%offで、どちらが割引率が高いか、わからない?
|
115
|
+
10%と10%offを同じものだと思っている?
|
1
こゆこと?
answer
CHANGED
@@ -18,4 +18,86 @@
|
|
18
18
|
|
19
19
|
なぜ、その条件なのか?
|
20
20
|
は、日本語の仕様を理解していただくか、
|
21
|
-
デシジョンテーブルの読み方を理解するしかないです。
|
21
|
+
デシジョンテーブルの読み方を理解するしかないです。
|
22
|
+
|
23
|
+
---
|
24
|
+
ここから追記
|
25
|
+
|
26
|
+
こうゆうこと?
|
27
|
+
デシジョンテーブルを愚直に実装すると以下のようなif文になるはずで
|
28
|
+
```java
|
29
|
+
if(coupon == 'Y' && weekday == 'Y' && age >= 65) {
|
30
|
+
// ルール列1
|
31
|
+
sale = "50%OFF";
|
32
|
+
}else if(coupon == 'Y' && weekday == 'Y' && age < 65) {
|
33
|
+
// ルール列2
|
34
|
+
sale = "30%OFF";
|
35
|
+
}else if(coupon == 'Y' && weekday != 'Y' && age >= 65) {
|
36
|
+
// ルール列3
|
37
|
+
sale = "10%OFF";
|
38
|
+
}else if(coupon == 'Y' && weekday != 'Y' && age < 65) {
|
39
|
+
// ルール列4
|
40
|
+
sale = "10%OFF";
|
41
|
+
}else if(coupon != 'Y' && weekday == 'Y' && age >= 65) {
|
42
|
+
// ルール列5
|
43
|
+
sale = "50%OFF";
|
44
|
+
}else if(coupon != 'Y' && weekday == 'Y' && age < 65) {
|
45
|
+
// ルール列6
|
46
|
+
sale = "30%OFF";
|
47
|
+
}else if(coupon != 'Y' && weekday != 'Y' && age >= 65) {
|
48
|
+
// ルール列7
|
49
|
+
sale = "割引なし";
|
50
|
+
}else if(coupon != 'Y' && weekday != 'Y' && age > 65) {
|
51
|
+
// ルール列8
|
52
|
+
sale = "割引なし";
|
53
|
+
}
|
54
|
+
```
|
55
|
+
上記がなぜ、単純なif文になるかわからないってことかな。
|
56
|
+
```java
|
57
|
+
if(weekday =='Y' && age >=65){
|
58
|
+
sale="50%OFF";
|
59
|
+
} else if (weekday == 'Y'){
|
60
|
+
sale ='30%OFF";
|
61
|
+
} else if (coupon == 'Y'){
|
62
|
+
sale="10%OFF";
|
63
|
+
}
|
64
|
+
```
|
65
|
+
|
66
|
+
> ※2つ以上の割引サービスが重なった場合は、割引率が高い方が優先される。
|
67
|
+
|
68
|
+
なので、割引率の高い順に適用されるかを判定します。※ここが、わからない?(A)
|
69
|
+
|
70
|
+
50%の割引が適用されるルールは、列1と列5です。
|
71
|
+
if文で書くと
|
72
|
+
```java
|
73
|
+
if((coupon == 'Y' && weekday == 'Y' && age >= 65) ||
|
74
|
+
(coupon != 'Y' && weekday == 'Y' && age >= 65)){
|
75
|
+
```
|
76
|
+
coupon は、Yでもそれ以外でも、50%の割引率になることがわかるので ※ここが、わからない?(B)
|
77
|
+
|
78
|
+
```java
|
79
|
+
if(weekday == 'Y' && age >= 65) {
|
80
|
+
```
|
81
|
+
だけ判定すれば良い。※ここが、わからない?(C)
|
82
|
+
50%の割引が適用されない場合、次に割引率が高いのは、30%なので、同様に ※ここが、わからない?(D)
|
83
|
+
```java
|
84
|
+
}else if((coupon == 'Y' && weekday == 'Y' && age < 65) ||
|
85
|
+
(coupon != 'Y' && weekday == 'Y' && age < 65)) {
|
86
|
+
```
|
87
|
+
となります。
|
88
|
+
50%の割引のように考えると
|
89
|
+
```java
|
90
|
+
if(weekday == 'Y' && age < 65) {
|
91
|
+
```
|
92
|
+
と、なるのでは?と考えるかもしれませんが、`(weekday == 'Y' && age >= 65)`を事前にチェックしているので、
|
93
|
+
この分岐を通る場合 weekdayが'Y'でないか、age < 65 であるはずです。 ※ここが、わからない?(E)
|
94
|
+
※age < 65を書いてもよいですが不要な記述を一般的にはイヤがります
|
95
|
+
それであれば、weekdayがYかを判定すれば、ageの判定は不要です。
|
96
|
+
なぜかというと、
|
97
|
+
weekdayがYであれば、age < 65なので、30%の割引が適用される。(age >= 65 の場合、この分岐に入らない)
|
98
|
+
weekdayがYでなければ、10%の割引か、割引なし、なので次の割引率の判定を行う。
|
99
|
+
|
100
|
+
同様に、10%の割引を判定する場合、すでにweekdayの判定はしているので、
|
101
|
+
couponの判定のみ行えば10%割引か判定できます。※ここが、わからない?(F)
|
102
|
+
|
103
|
+
ちなみに、全部愚直に書いても問題があるわけではありません。
|