问答详情
源自:1-6 练习题

有道异常类的题不会写,求大神解答!!!!!

编写一程序,从控制台输入一个班学生的某门课程成绩,统计及格人数,不及格人数、平均数。为此设计一个异常类,当输入的成绩小于0分或大于100分时,抛出异常,程序中捕捉这个异常,并显示相应的提示。

提问者:幕粉一枚 2016-10-05 11:38

个回答

  • 祸害帅
    2016-10-05 12:28:50
    已采纳

    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+"个的学生的成绩为:"+chengji);

    if(chengji>=60){

    jigeIndex ++;

    }else{

    bujigeIndex++;

    }

    try {

    if(chengji<0 || chengji>100){

    throw new RuntimeException("分数不正确");

    }

    } catch (Exception e) {

    e.printStackTrace();

    i--;

    }

    sum +=chengji;

    avg = sum/proNum;

    }


    System.out.println("及格人数为:"+jigeIndex);

    System.out.println("不及格人数为:"+bujigeIndex);

    System.out.println("平均分为:"+avg);

    }

    }

    =====================================================

    这样是不是你要的结果??????

  • 输输输
    2016-10-05 16:10:32

    大概就这样,简单的数学运算

    package page;
    
    import java.util.Scanner;
    
    public class Test {
    
        public static void main(String[] args) {
            final int M = 3; // 人数,三个人
            
            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("总人数:" + M);
            System.out.println("及格数:" + 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("你输入的数据通过检测");
                return number;
            }
            catch (NumberException e) {
                e.printStackTrace();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            
            return 0;
        }
    
    }

    测试结果:

    学生 1 - 输入成绩:
    55
    你输入的数据通过检测
    学生 2 - 输入成绩:
    66
    你输入的数据通过检测
    学生 3 - 输入成绩:
    77
    你输入的数据通过检测
    -----------------------
    总人数:3
    及格数:2
    不及格:1
    平均分:66.0


  • 幕粉一枚
    2016-10-05 15:55:32

    谢谢,看完有思路了



  • 输输输
    2016-10-05 12:12:11

    先创建一个异常类: 

    就叫它为: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("你输入的数据通过检测");
            }
            catch (NumberException e) {
                e.printStackTrace();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
        
    }

    测试结果:

    输入成绩:
    20
    你输入的数据通过检测
    输入成绩:
    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)