1. 程式人生 > >尚學堂JAVA300集 第六章 異常機制-----編碼題答案

尚學堂JAVA300集 第六章 異常機制-----編碼題答案

本編碼答案為本人個人編輯,僅供參考,用的簡單方式。

三、編碼題

  1. 編寫程式接收使用者輸入分數資訊,如果分數在0—100之間,輸出成績。如果成績不在該範圍內,丟擲異常資訊,提示分數必須在0—100之間。

要求:使用自定義異常實現。

程式碼如下:

import java.util.Scanner;

public class TestCode1 {
    public static void main(String[]args) {
        System.out.println("請輸入分數");
        Scanner sc = new Scanner(System.in);
        int
num = sc.nextInt(); // System.out.println("step1"); try { // System.out.println("step2"); if(num<1||num>100) { throw new Exception("分數必須在1-100之間"); } System.out.println("您輸入的分數是"+num); } catch (Exception e) { // TODO Auto-generated catch block
// System.out.println("step3"); e.printStackTrace(); }finally { sc.close(); } } }

2.寫一個方法void isTriangle(int a,int b,int c),判斷三個引數是否能構成一個三角形, 如果不能則丟擲異常IllegalArgumentException,顯示異常資訊 “a,b,c不能構成三角形”,如果可以構成則顯示三角形三個邊長,在主方法中得到命令列輸入的三個整數, 呼叫此方法,並捕獲異常。 程式碼如下:

import java.util.Scanner;

public class TestCode2 {

    public static void main(String[]args) throws Exception {
        System.out.println("請輸入三角形的三個邊長:");
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int c = sc.nextInt();
        isTriangle(a,b,c);
    }

    static void  isTriangle(int a,int b,int c) throws Exception {
        try {
            if((a+b)<=c || (a+c)<=b || (b+c)<=a ) {
                throw new Exception("a,b,c不能構成三角形");
            }else {
                System.out.println("構成的三角形的邊長分別為:\na="+a+"\tb="+b+"\tc="+c);
            }           
        }finally {

        }
    }
}

3.編寫一個計算N個學生分數平均分的程式。程式應該提示使用者輸入N的值,如何必須輸入所有N個學生分數。如果使用者輸入的分數是一個負數,則應該丟擲一個異常並捕獲,提示“分數必須是正數或者0”。並提示使用者再次輸入該分數。 程式碼如下:

import java.util.Scanner;

public class TestCode3 {
    public static void main(String[]args) {
        //n: 確定學生數目
        System.out.println("請輸入學生數目:");
        Scanner sc1 = new Scanner(System.in);
        int n = sc1.nextInt();

        System.out.println("請依次輸入學生成績:");
        Scanner sc2 = new Scanner(System.in);
        int[] f = new int[n];   //f: 定義學生成績的數目
        long sum =0;
        for(int i=0; i<n; i++) {
            f[i] = sc2.nextInt();
            judge(f[i]);
            sum +=f[i];
        }
        double ave = (double)sum/n;
        System.out.println("學生的平均成績為:"+ave);

    }

    static void judge(int i) {
        try {
            if(i<0) {
                throw new Exception("分數必須是正數或者0");
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {          
        }
    }
}