有道異常類的題不會寫,求大神解答?。。。?!
編寫一程序,從控制臺輸入一個班學生的某門課程成績,統(tǒng)計及格人數(shù),不及格人數(shù)、平均數(shù)。為此設計一個異常類,當輸入的成績小于0分或大于100分時,拋出異常,程序中捕捉這個異常,并顯示相應的提示。
編寫一程序,從控制臺輸入一個班學生的某門課程成績,統(tǒng)計及格人數(shù),不及格人數(shù)、平均數(shù)。為此設計一個異常類,當輸入的成績小于0分或大于100分時,拋出異常,程序中捕捉這個異常,并顯示相應的提示。
2016-10-05
大概就這樣,簡單的數(shù)學運算
package?page; import?java.util.Scanner; public?class?Test?{ ????public?static?void?main(String[]?args)?{ ????????final?int?M?=?3;?//?人數(shù),三個人 ???????? ????????Test?test?=?new?Test(); ???????? ????????test.calculate(M); ????} ????public?void?calculate(final?int?M)?{ ????????double?sum?=?0.0; ????????int?k?=?0; ???????? ????????for(int?i?=?0;?i?<?M;?i++)?{ ????????????System.out.print("學生?"?+?(i?+?1)?+?"?-?"); ????????????int?score?=?this.in(); ????????????sum?+=?score; ????????????if?(score?>?60)?k++;?//?及格 ????????} ????????System.out.println("-----------------------"); ????????System.out.println("總人數(shù):"?+?M); ????????System.out.println("及格數(shù):"?+?k); ????????System.out.println("不及格:"?+?(M?-?k)); ????????System.out.println("平均分:"?+?(sum?/?M)); ????} ????/** ?????*?throws?拋出異常類型 ?????*/ ????public?void?check(int?n)?throws?NumberException?{ ????????/** ?????????*?自定義異常處理,?不符合條件就拋出異常 ?????????*/ ????????if?(n?<?0?||?n?>?100)?{ ????????????throw?new?NumberException("成績必須在0-100"); ????????} ????} ????/** ?????*?輸入成績 ?????*/ ????public?int?in()?{ ????????System.out.println("輸入成績:"); ????????Scanner?input?=?new?Scanner(System.in); ????????try?{ ????????????int?number?=?input.nextInt(); ????????????/** ?????????????*?交給自定義異常處理 ?????????????*/ ????????????this.check(number); ????????????/** ?????????????*?沒有拋出異常 ?????????????*/ ????????????System.out.println("你輸入的數(shù)據(jù)通過檢測"); ????????????return?number; ????????} ????????catch?(NumberException?e)?{ ????????????e.printStackTrace(); ????????} ????????catch?(Exception?e)?{ ????????????e.printStackTrace(); ????????} ???????? ????????return?0; ????} }
測試結果:
學生?1?-?輸入成績: 55 你輸入的數(shù)據(jù)通過檢測 學生?2?-?輸入成績: 66 你輸入的數(shù)據(jù)通過檢測 學生?3?-?輸入成績: 77 你輸入的數(shù)據(jù)通過檢測 ----------------------- 總人數(shù):3 及格數(shù):2 不及格:1 平均分:66.0
謝謝,看完有思路了
先創(chuàng)建一個異常類:?
就叫它為:NumberException
package?page; public?class?NumberException?extends?Exception?{ ????public?NumberException(String?Msg)?{ ????????System.out.println("錯誤:"?+?Msg); ????} }
然后在主文件中使用自定義的異常類:
package?page; import?java.util.Scanner; public?class?Test?{ ???? ????public?static?void?main(String[]?args)?{ ???????? ????????Test?test?=?new?Test(); ???????? ????????test.in(); ????} ????/** ?????*?throws?拋出異常類型 ?????*/ ????public?void?check(int?n)?throws?NumberException?{ ????????/** ?????????*?自定義異常處理,?不符合條件就拋出異常 ?????????*/ ????????if?(n?<?0?||?n?>?100)?{ ????????????throw?new?NumberException("成績必須在0-100"); ????????} ????} ???? ????/** ?????*?輸入成績 ?????*/ ????public?void?in()?{ ????????System.out.println("輸入成績:"); ????????Scanner?input?=?new?Scanner(System.in); ???????? ????????try?{ ????????????int?number?=?input.nextInt(); ????????????/** ?????????????*?交給自定義異常處理 ?????????????*/ ????????????this.check(number); ????????????/** ?????????????*?沒有拋出異常 ?????????????*/ ????????????System.out.println("你輸入的數(shù)據(jù)通過檢測"); ????????} ????????catch?(NumberException?e)?{ ????????????e.printStackTrace(); ????????} ????????catch?(Exception?e)?{ ????????????e.printStackTrace(); ????????} ????} ???? }
測試結果:
輸入成績: 20 你輸入的數(shù)據(jù)通過檢測
輸入成績: 120 錯誤:成績必須在0-100 page.NumberException at?page.Test.check(Test.java:22) at?page.Test.in(Test.java:38) at?page.Test.main(Test.java:11)
舉報
2016-10-05
public class Test3 {
public static void main(String[] args) {
int proNum = 5;//班級里面有20人
int jigeIndex =0;
int bujigeIndex = 0;
int avg =0;
int sum =0;
Scanner input = new Scanner(System.in);
System.out.println("***請輸入班級學生的成績***");
for(int i = 1;i<= proNum;i++){
System.out.print("請輸入第"+i+"個學生的成績:");
int chengji = input.nextInt();
System.out.println("第"+i+"個的學生的成績?yōu)?"+chengji);
if(chengji>=60){
jigeIndex ++;
}else{
bujigeIndex++;
}
try {
if(chengji<0 || chengji>100){
throw new RuntimeException("分數(shù)不正確");
}
} catch (Exception e) {
e.printStackTrace();
i--;
}
sum +=chengji;
avg = sum/proNum;
}
System.out.println("及格人數(shù)為:"+jigeIndex);
System.out.println("不及格人數(shù)為:"+bujigeIndex);
System.out.println("平均分為:"+avg);
}
}
=====================================================
這樣是不是你要的結果??????