【整活】KFC 疯狂星期四,V50,Java 版
今天是星期四,也不是说多想吃 KFC,只是这氛围到……(嘘)
那就整个 KFC 疯四异常吧,来小亮给他整个活,艹,走,忽略,ጿ ኈ ቼ ዽ ጿ
自定义异常其实很简单,新建一个类,继承 Exception,再对方法进行重新1
2
3
4
5public class KFCException extends Exception{
public KFCException(String message) {
super(message);
}
}
疯四购买 KFC 需要有购买的人,所以创建一个 Person 类,在里面定义一个字段存储余额。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18public class Person {
private double balance;
public Person(double balance) {
this.balance = balance;
}
public Person() {
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
再创建一个 KFC 类,并且写一个 pay 的成员方法和一个购买黄金鸡块的方法,在支付订单的方法中抛出 KFC 疯四异常1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31public class KFC {
//价格
private double price;
public KFC() {
}
public KFC(double price) {
this.price = price;
}
/**
* 购买黄金鸡块
* @param num 数量
*/
public void payGoldenChickenNuggets(int num){
this.price += num * 20;
}
/**
* 支付账单
* @param kfc 购买的KFC订单
* @param me 购买的人
* @throws KFCException
*/
public void pay(KFC kfc, Person me) throws KFCException {
if (me.getBalance()<kfc.price){
throw new KFCException("KFC Crazy Thursday,But balance is insufficient, So you need V me 50");
}
}
}
准备工作都好了,买 KFC 去咯1
2
3
4
5
6
7
8
9
10
11
12public class CrazyThursday {
public static void main(String[] args) {
Person me = new Person(0);
KFC kfc = new KFC();
kfc.payGoldenChickenNuggets(1);
try {
kfc.pay(kfc,me);
} catch (KFCException e) {
e.printStackTrace();
}
}
}
在这里我们创建了一个 Person 类 me,通过全参构造设置 me 的余额是 0,me 去到 KFC 买了一份黄金鸡块后去 pay (付款),但是 me 的余额为 0,小于订单的价格,所以异常就产生了。
哭惹,我的 KFC 黄金鸡块
忍一时,越想越气,退一步,越想越亏,到底怎么才能让 me 买到黄金鸡块呢?
懂了,V 我 50!
所以,需要在 Person 类中加一个方法 v50 获得 50 块1
2
3
4public void v50(Person me) {
me.balance += 50;
this.balance -= 50;
}1
2
3
4
5
6
7
8
9
10
11
12
13
14public class CrazyThursday {
public static void main(String[] args) {
Person me = new Person(0);
Person you = new Person(88888888);
you.v50(me);
KFC kfc = new KFC();
kfc.payGoldenChickenNuggets(1);
try {
kfc.pay(kfc,me);
} catch (KFCException e) {
e.printStackTrace();
}
}
}
这次在去 KFC 前 me 先找到 you,让 you V 了我 50,你慷慨解囊,从 88888888 的余额中 V 了我 50,所以我的余额就从 0 变成了 50,在余额有 50 的情况下再去 KFC 点一份黄金鸡块,就可以成功支付了。