題目:
1、實驗要求
本實驗要求:以情人節送花爲業務背景,體驗自定義異常以及異常處理機制。
1-1. 業務說明:
1-1.1. 本實驗以情人節送花爲業務背景,女方提出送花需求,男方送出鮮花。
1-1.2. 當女方提出送花數超過男方可承受範圍(例如:100朵)時,需要拋出異常。
1-2. 創建工程並配置環境:
1-2.1. 限制1. 創建實驗工程,命名爲:SE_JAVA_EXP_E038;
1-2.2. 限制2. 創建包,命名爲:cn.campsg.java.experiment;
1-2.3. 限制3. 創建包,命名爲:cn.campsg.java.experiment.exception。
1-3. 創建送花異常類:
1-3.1. 限制1. 在cn.campsg.java.experiment.exception 包中創建異常類:
1)異常類名:RoseException
1-3.2. 爲異常類RoseException創建0參構造器:
1)在RoseException構造器內調用父類構造器。
1-3.3. 爲異常類RoseException創建1參構造器(參數爲字符串類型):
1)在RoseException構造器內調用父類1參構造器。
1-4. 創建送花業務類:
1-4.1. 限制1. 在cn.campsg.java.experiment包中創建送花業務類:
1)業務類類名:Rose
1-4.2. 爲類Rose創建私有屬性:
1)男方鮮花持有數:int total;
1-4.3. 爲類Rose創建0參構造器:
1-4.4. 爲類Rose創建1參構造器:
1)在構造器內對total屬性賦值:鮮花持有數 = 構造器參數值。
1-4.5. 爲Rose類創建如下方法:
訪問權限
方法名稱
返回值
方法參數
參數說明
方法說明
public
giveRose
void
int num
送花數量
模擬“送花”
1)該方法用於模擬男方向女方送花。
1-4.6. 送花業務邏輯描述如下:
1)當送花需求(參數)小於1時,方法輸出以下信息提示錯誤:
“送花的數量不正確:數量不能小於1!”
2)當送花需求(參數)大於男方的鮮花持有數(total)時,方法拋出異常;
異常爲:RoseException,錯誤信息:"沒錢買" + num + "支玫瑰花"
3)當有送花需求時,男方鮮花已經送完(total = 0),方法拋出異常;
異常爲:RoseException,錯誤信息:"沒錢買" + num + "支玫瑰花"
4)當送花需求(參數)小於等於男方的鮮花持有數(total)時,輸出如下信息:
"親愛的,送你" + 送花數量 + "朵玫瑰花!"
5)同時更新男方的鮮花持有數(total):total = total - num。
1-5. 顯示送花的結果:
1-5.1. 限制1. 在cn.campsg.java.experiment包中創建主類:MainClass;
1-5.2. 爲MainClass創建入口主方法:main;
1-5.3. 在main中,調用Rose的1參構造器創建1個Rose對象;
1-5.4. 提示用戶輸入送花數量,提示信息:你想送女朋友多少朵玫瑰(數字):
1-5.5. 接收用戶輸入的送花數;
1-5.6. 在main中,執行送花操作並捕獲送花時可能出現的異常;
1-5.7. 確保送花操作無論是否成功都顯示:無論如何,我都是愛你的。
RoseException.java
package cn.campsg.java.experiment.exception;
public class RoseException extends Exception{
private static final long serialVersionUID = 1L;
public RoseException(){
}
public RoseException(String msg){
super(msg); //父類進行構造
}
}
Rose.java
package cn.campsg.java.experiment;
import cn.campsg.java.experiment.exception.RoseException;
public class Rose {
private int total;
public Rose(){
}
public Rose(int total){
this.total = total;
}
public void giveRose(int num) throws RoseException{ //接收異常類
if(num<1){
System.out.println("送花的數量不正確:數量不能小於1!");
}
if(num>total){
throw new RoseException("沒錢買"+num+"支玫瑰花");
}
if(num<=total){
System.out.println("親愛的,送你"+num+"朵玫瑰花!");
this.total -= num;
}
}
}
MainClass.java
package cn.campsg.java.experiment;
import java.util.Scanner;
import cn.campsg.java.experiment.exception.RoseException;
public class MainClass {
public static void main(String[] args){
System.out.println("你想送女朋友多少朵玫瑰(數字)");
Scanner scan = new Scanner(System.in);
Rose rose = new Rose(100);
try{
int num = scan.nextInt();
rose.giveRose(num);
}catch(RoseException e){
System.out.println(e.getMessage());
}finally {
scan.close();
System.out.println("無論如何,我都是愛你的!\n");
}
}
}