Java-实验三

此博客包含三个Java程序示例。第一个展示了如何使用try-catch-finally处理数组越界异常。第二个创建了一个自定义异常类,当用户输入字符串“XYZ”时抛出异常。第三个程序实现了学生信息录入,包括年龄、出生年月日和Java成绩,处理了输入转换异常,并定义了两种不同的平均分计算方法。
摘要由CSDN通过智能技术生成
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));
        }
    }
}

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

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

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

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

分数异常:

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值