Board logo

標題: 【060】例外處理 (六) - 自訂例外類別2 [打印本頁]

作者: tonyh    時間: 2023-4-26 15:56     標題: 【060】例外處理 (六) - 自訂例外類別2

本帖最後由 tonyh 於 2023-4-26 16:21 編輯

試自訂一名為 MyException 的例外類別, 使在 BMI 值的計算程式中, 當使用者輸入的身高或體重數值不合常理時, 自行拋出該類別的例外物件, 並且使用 try...catch 語法, 如果 catch 到該類別的例外物件, 則回應 "請輸入合理的身高! (或體重)". 當然, 其他的例外物件也要能 catch 到, 譬如如果 catch 到 InputMismatchException 則回應 "請輸入數字!"

  1. import java.util.*;
  2. public class Ch51
  3. {
  4.     public static void main(String args[])
  5.     {
  6.         for(;;)
  7.         {
  8.             try
  9.             {
  10.                 double h,w,bmi;
  11.                 Scanner s=new Scanner(System.in);
  12.                 System.out.print("請輸入你的身高(公分): ");
  13.                 h=s.nextDouble();
  14.                 if(h<50 || h>250)
  15.                     throw new MyException("請輸入合理的身高!");
  16.                 h/=100;    //h=h/100;
  17.                 System.out.print("請輸入你的體重(公斤): ");
  18.                 w=s.nextDouble();
  19.                 if(w<5 || w>250)
  20.                     throw new MyException("請輸入合理的體重!");
  21.                 bmi=w/(h*h);
  22.                 System.out.println("你的BMI值為: "+bmi);
  23.             }catch(InputMismatchException e)
  24.             {
  25.                 System.out.println("請輸入數字!");
  26.             }catch(MyException e)
  27.             {
  28.                 System.out.println(e.getMessage());
  29.             }
  30.             System.out.println();
  31.         }
  32.     }
  33. }
  34. class MyException extends Exception    //繼承
  35. {
  36.     MyException(String str)   //建構子
  37.     {
  38.         super(str);
  39.     }
  40. }
複製代碼

作者: 王捷恩    時間: 2023-4-26 16:33

  1. import java.util.*;
  2. public class B {

  3.         public static void main(String[] args) {
  4.         for(;;)
  5.         {
  6.             try
  7.             {
  8.                 double h,w,bmi;
  9.                 Scanner s=new Scanner(System.in);
  10.                 System.out.print("請輸入你的身高(公分): ");
  11.                 h=s.nextDouble();
  12.                 if(h<50 || h>250)
  13.                     throw new MyException("請輸入合理的身高!");
  14.                 h/=100;  
  15.                 System.out.print("請輸入你的體重(公斤): ");
  16.                 w=s.nextDouble();
  17.                 if(w<5 || w>250)
  18.                     throw new MyException("請輸入合理的體重!");
  19.                 bmi=w/(h*h);
  20.                 System.out.printf("你的BMI值為: %.2f",bmi);
  21.             }catch(InputMismatchException e)
  22.             {
  23.                 System.out.println("請輸入數字!");
  24.             }catch(MyException e)
  25.             {
  26.                 System.out.println(e.getMessage());
  27.             }
  28.             System.out.println();
  29.         }
  30.     }
  31. }
  32. class MyException extends Exception
  33. {
  34.     MyException(String str)
  35.     {
  36.         super(str);
  37.     }
  38. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2