Java作業 題目:16版.情人節送玫瑰花


題目:16版.情人節送玫瑰花
題干:

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. 確保送花操作無論是否成功都顯示:無論如何,我都是愛你的。

2、實現思路

    2-1. 創建工程並配置環境。

    2-2. 創建送花異常類:

        2-2.1. 在cn.campsg.java.experiment.exception 包中創建異常類:

                1)異常類名:RoseException

        2-2.2. 為RoseException類創建0參構造器:

                1)在RoseException構造器內調用父類0參構造器。

        2-2.3. 為RoseException類創建1參構造器,其形式如下:

 

  +提示

 public RoseException(String msg){

 }

                1)在構造器內調用父類的1參構造器:super(msg);

    2-3. 創建送花業務類:

        2-3.1. 在cn.campsg.java.experiment包中創建送花業務類Rose;

        2-3.2. 為Rose類創建私有屬性,男方鮮花持有數:int total;

        2-3.3. 為Rose類創建0參構造器;

        2-3.4. 為Rose類創建1參構造器,其形式如下:

 

  +提示

 public Rose (int total){

 }

                1)在構造器內為屬性total賦值:total = total - num。

        2-3.5. 為Rose類創建送花方法:giveRose並申明自定義異常,其形式如下:

 

  +提示

 public void giveRose(int num) throws RoseException {

 }

        2-3.6. giveRose方法業務邏輯如下;

                1)當送花需求(參數)小於1時,方法輸出以下信息提示錯誤:

                “送花的數量不正確:數量不能小於1!”

                2)當送花需求(參數)大於男方的鮮花持有數(total)時,方法拋出異常;

                異常為:RoseException,錯誤信息:"沒錢買" + num + "支玫瑰花"

                3)當有送花需求時,男方鮮花已經送完(total = 0),方法拋出異常;

                異常為:RoseException,錯誤信息:"沒錢買" + num + "支玫瑰花"

 

  + 提示

 if (total <= 0 || num > total)

  throw new RoseException("沒錢買" + num + "支玫瑰花");

                4)當送花需求(參數)小於等於男方的鮮花持有數(total)時,輸出如下信息:

                "親愛的,送你" + num + "朵玫瑰花!" 

                5)同時更新男方的鮮花持有數(total):total = total - num。

 

  + 提示

 System.out.println("親愛的,送你" + num + "朵玫瑰花!");

 this.total -= num;

    2-4. 顯示送花的結果:

        2-4.1. 在包cn.campsg.java.experiment中創建業務主類:MainClass;

        2-4.2. 在MainClass中定義主方法:main;

        2-4.3. 接收用戶輸入的送花數:

                1) 要求用戶輸入送花數,提示語句:你想送女朋友多少朵玫瑰(數字):。

                2)創建Scanner對象,設置參數:System.in:

 

  + 提示

 Scanner in = new Scanner(System.in);

                3)調用Scanner的nextInt方法獲取用戶輸入的送花數。

        2-4.4. 在main方法中,創建Rose對象並初始化男方擁有100多鮮花:

 

  + 提示

 Rose rose = new Rose(100);

        2-4.5. 在main中,執行送花操作並捕獲送花時可能出現的異常:

                1)調用rose的giveRose函數,並傳入用戶輸入的鮮花數;

                2)捕捉giveRose函數可能拋出的RoseException。

                3)在catch塊中打印RoseException對象中的錯誤信息。

        2-4.6. 增加finally塊,在finally塊中向控制台輸出:無論如何,我都是愛你的。

 

  + 提示

 try {

     // 獲取用戶輸入的玫瑰花

     int num = scan.nextInt();

     // 開始送花

     rose.giveRose(num);

 } catch (RoseException e) {

     System.out.println(e.getMessage());

 } finally {

     scan.close();

     System.out.println("無論如何,我都是愛你的!\n");

 }

3、驗證與測試

    3-1. 在工程中定位主類MainClass。

    3-2. 右鍵點擊MainClass類,依次選擇:Run As->Java Application。

    3-3. 運行程序,查看輸出結果是否符合預期。

 
 
1 package cn.campsg.java.experiment.exception;
2 
3 public class RoseException extends Exception {
4     
5     public RoseException() {}//2-3.2  0參構造器
6     public RoseException(String msg){
7         super(msg);
8     }
9 }
RoseException
 1 package cn.campsg.java.experiment;
 2 import cn.campsg.java.experiment.exception.RoseException;
 3 
 4 public class Rose {
 5 
 6     private int total;
 7     public Rose() {}
 8     public Rose (int total){ 
 9         this.total = total ;
10      }
11     
12      public void giveRose(int num) throws RoseException { 
13          if(num < 1) {
14                 System.out.println("送花的數量不正確:數量不能小於1!");
15          }
16          else if (total<= 0||num>total) 
17          {
18              throw new RoseException("沒錢買" + num + "支玫瑰花");
19          }
20              System.out.println("親愛的,送你" + num + "朵玫瑰花!");
21              this.total -= num;
22      }
23 }
Rose
 1 package cn.campsg.java.experiment;
 2 import cn.campsg.java.experiment.exception.RoseException;
 3 
 4 import java.util.Scanner;
 5 
 6 public class MainClass {
 7     public static void main (String gras[]) {
 8         System.out.println("你想送女朋友多少朵玫瑰(數字):");
 9         Scanner in = new Scanner(System.in);
10         Rose rose = new Rose(100);
11         try {
12             int num = in.nextInt();
13             rose.giveRose(num);
14          } 
15         catch (RoseException e) {
16             System.out.println(e.getMessage());
17          } 
18         finally {
19              in.close();
20              System.out.println("無論如何,我都是愛你的!\n");
21          }
22     }
23 }
MainClass

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM