7-1 成绩录入时的及格与不及格人数统计 (10 分) (异常类)

7-1 成绩录入时的及格与不及格人数统计 (10 分)

编写一个程序进行一个班某门课程成绩的录入,能够控制录入成绩总人数,对录入成绩统计其及格人数和不及格人数。设计一个异常类,当输入的成绩小0分或大于100分时,抛出该异常类对象,程序将捕捉这个异常对象,并调用执行该异常类对象的toString()方法,该方法获取当前无效分数值,并返回一个此分数无效的字符串。
输入格式:
从键盘中输入学生人数n
从键盘中输入第1个学生的成绩
从键盘中输入第2个学生的成绩

从键盘中输入第n个学生的成绩
(注:当输入的成绩无效时(即分数为小于0或大于100)可重新输入,且输出端会输出此分数无效的提醒。)
输出格式:
显示及格总人数
显示不及格总人数
输入样例:
在这里给出一组输入。例如:
3
100
30
60

输出样例:
在这里给出相应的输出。例如:
2
1

输入样例:
在这里给出一组输入。例如:
2
200
69
30

输出样例:
在这里给出相应的输出。例如:
200invalid!
1
1

答案

import java.util.*;
class MyException extends Exception //自定义异常类
{
 MyException(int s)
 {
  super(s+"invalid!");
 }
}
public class Main{
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int n =in.nextInt();
   int count1=0,count2=0;
   ArrayList<Integer> c = new ArrayList <> (n);//创建动态数组,因为数组容量会增加(题目要求输入非法值时,需要重新输入一个新值)
   for(int j=0;j<n;j++)
   {
    int z= in.nextInt();
    c.add(z);//将输入的值放进动态数组内。
    if(z>100||z<0)
     n++;
   }  
   for(int a:c) //遍历数组里的每一个值。
 {
     try{
       if(a>100||a<0)
        throw new MyException(a);
       if(a<=100&&a>=60)
        count1++;
       if(a>=0&&a<60)
        count2++;
      }
     catch(MyException e)
     {
      System.out.println(e.getMessage());
     }
 }
 System.out.println(count1);
    System.out.println(count2);
}}


你可能感兴趣的:(java)