Java-实验三

package Ex3.Firstquestion;

/**
 * @author 15328
 * 1、用try-catch-finally结构实现异常处理。编译并运行程序,写出程序运行结果。
 */
public class Main {
    public static void main(String[] args) {
        int i = 0;
        String greeting [] = {"Hello","Only","Test"};
        while(i<4){
            try{
                System.out.println(greeting[i]);
            }catch(ArrayIndexOutOfBoundsException e){
                System.out.println("数组越界");
            }
            finally {
                System.out.println("总会运行");
            }
            i++;
        }
    }
}

在这里插入图片描述

package Ex3.Secondquestion;

import java.io.IOException;
import java.util.Arrays;
import java.util.Scanner;

/**
 * @author 15328
 * 2、设计一个Java程序,自定义异常类,从命令行(键盘)输入一个字符串,
 * 如果该字符串值为“XYZ”,则抛出一个异常信息“This is a XYZ”,
 * 如果从命令行输入ABC,则没有抛出异常。(只有XYZ和ABC两种输入)。
 */
public class Main {
    public static void main(String[] args) throws customizeException{
        Scanner input = new Scanner(System.in);
        String test = input.next();
        if(test.equals("XYZ")){
            throw new customizeException("This is a XYZ");
        }
    }
}
class customizeException extends IOException{
    public customizeException(){}
    public customizeException(String gripe){
        super(gripe);
    }
}

在这里插入图片描述

package Ex3.Thirdquestion;
import Ex1.Firstquestion.Student;;import java.io.IOException;
import java.util.Scanner;

/**
 * @author 15328
 * 3、声明一个Average接口,继续完善学生信息录入程序,其中约定求平均值的方法;
 * 声明多个类实现Average接口,分别给出求平均值的方法实现。
 * 例如,在一组数值中,一种算法是,全部数值相加后求平均值,
 * 另一种算法是,去掉一个最高分和一个最低分后,再将总分求平均等;
 * 使用键盘输入数据时,对于不能转换成数值的字符串进行异常处理。
 */
public class Exception3 {
    public static void main(String[] args) {
        System.out.println("请输入学生人数:");
        Scanner input = new Scanner(System.in);
        int numOfStudent = input.nextInt();
        input.nextLine();
        Student []students = new Student[numOfStudent];
        String name;
        String age;
        String year;
        String month;
        String day;
        String marksOfJava;
        for(int i = 0; i < numOfStudent; i++){
            name  = input.next();


            age = input.next();
            year = input.next();
            month = input.next();
            day = input.next();
            marksOfJava = input.next();

            students[i]=new Student(name,throwOfThis(age),throwOfThis(year),throwOfThis(month),
                    throwOfThis(day),throwOfDouble(marksOfJava));
        }
    }
    public static int  throwOfThis(String gripe){
        try{
            Integer.parseInt(gripe);
            return Integer.parseInt(gripe);
        }catch (NumberFormatException e){
            e.printStackTrace();
            return -1;
        }
    }
    public static double throwOfDouble(String markOfJava){
        try{
            Double.parseDouble(markOfJava);
            return Double.parseDouble(markOfJava);
        }catch(NumberFormatException e){
            e.printStackTrace();
            return -1;
        }
    }
}



interface Average{
    void computeOfAverage(Student[] students);
}
class FirstOfCompute implements Average{
    @Override
    public void computeOfAverage(Student[] students) {
        double sum = 0.0;
        for(Student student : students) {
            sum += student.getMarksOfJava();
        }
        System.out.printf("the AverageMarks is: %.2f\n" + sum/students.length);
    }
}
class SecondOfCompute implements Average{
    @Override
    public void computeOfAverage(Student[] students) {
        if(students.length <= 2) {
            System.out.println("数量小于等于2,在去掉最大值和最小值后,无法再计算");
        }
        else {
            double max = students[0].getMarksOfJava();
            double min = students[0].getMarksOfJava();
            double sum = 0.0;
            for(Student student : students){
                if(student.getMarksOfJava() >= max) {
                    max = student.getMarksOfJava();
                }
                else {
                    if(student.getMarksOfJava() <= min) {
                        min = student.getMarksOfJava();
                    }
                }
            }
            for(Student student : students){
                if(student.getMarksOfJava() != max && student.getMarksOfJava() != min) {
                    sum += student.getMarksOfJava();
                }
            }
            System.out.printf("the Average is: %.2f\n",sum/ (students.length-2));
        }
    }
}

运行结果截图:
年龄异常:
在这里插入图片描述

出生年份异常:
在这里插入图片描述

出生月份异常:
在这里插入图片描述

出生日期异常:
在这里插入图片描述

分数异常:

在这里插入图片描述

posted @ 2022-09-24 09:37  在天边偷看小天使  阅读(11)  评论(0)    收藏  举报  来源