JAVA异常处理

实验目的
1.了解Java中常见的异常。
2.掌握自定义异常的方法。
3.了解如何在方法中抛出异常。

实验内容
1. 编写一个程序,要求从键盘输入一个圆的半径(double类型),计算并输出圆的面积。在没有加入异常处理机制时,输入的数据不是double型数据(如字符串“abc”)会产生什么结果?加入异常处理机制后,让程序在输入不正确的类型数据时给出错误提示并要求重新输入。 
源代码:

import java.util.InputMismatchException;
import java.util.Scanner;
public class test {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		try {
			double r=sc.nextDouble();
			double s=3.14*r*r;
			System.out.println("圆的面积为:"+s);
		}catch(InputMismatchException e) {
			System.out.println("请以正确的形式输出");
		}
	}

2. 分析下面的程序。
(1)程序在运行时会产生哪些异常?怎样捕获并处理异常?

(2)修改代码:不管程序在执行过程中会不会产生异常,最后都输出“程序运行结束”。

import java.util.Scanner;
public class ExceptionSample {
public static void main(String[] args) {
		    Scanner sc=new Scanner(System.in);
		    int a[]=new int[5];
		    int n,sum=0;
		    int average;
              n=sc.nextInt();
              for(int i=0;i

修改后代码:

import java.util.InputMismatchException;
import java.util.Scanner;
public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a[] = new int[5];
        int n, sum = 0;
        int average;
        try {
            n = sc.nextInt();
            for (int i = 0; i < n; i++) {
                a[i] = sc.nextInt();
                sum = sum + a[i];
            }
            average = sum / n;
            System.out.println(average);
        } catch (InputMismatchException e){
            System.out.println("输入的数据格式不正确!");
        } catch (ArithmeticException e){
            System.out.println("除0异常!");
        }finally {
            System.out.println("程序运行结束");
        }
        sc.close();
    }
}

3. 设计一个程序,输入两个整数和一个算术运算符(+、-、*、/),根据运算符,计算两个整数的运算结果。考虑到用户输入的数据不合法,需要捕获异常(数据格式异常、除零异常)。
源代码:

import java.util.Scanner;
public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num1, num2;
        try {
            num1 = Integer.parseInt(sc.nextLine());
        } catch (NumberFormatException e) {
            System.out.println("输入格式错误,请输入整数!");
            return;
        }
        try {
            num2 = Integer.parseInt(sc.nextLine());
        } catch (NumberFormatException e) {
            System.out.println("输入格式错误,请输入整数!");
            return;
        }
        String operator = sc.nextLine();
        if (!operator.equals("+") && 
!operator.equals("-") && 
!operator.equals("*") 
&& 
!operator.equals("/")) {
            System.out.println
("输入的运算符不合法,请输入+、-、*、/中的一个!");
            return;
        }
        int result = 0;
        try {
            switch (operator) {
                case "+":
                    result = num1 + num2;
                    break;
                case "-":
                    result = num1 - num2;
                    break;
                case "*":
                    result = num1 * num2;
                    break;
                case "/":
                    if (num2 == 0) {
                        System.out.println("除数不能为零!");
                        return;
                    }
                    result = num1 / num2;
                    break;
            }
            System.out.println("结果为:" + result);
        } catch (Exception e) {
            System.out.println("发生异常:" + e.getMessage());
        } finally {
            System.out.println("程序运行结束!");
        }
    }
}

4. 设计一个程序,根据三角形的三边求三角形面积。要求自定义一个异常类IllegaException,在求面积的方法area()中声明抛出这个异常类型,当从键盘输入三条边的数据不能构成三角形时抛出异常。

源代码:

import java.util.Scanner;
class IllegaException extends Exception {
    public IllegaException(String message) {
        super(message);
    }
}
public class test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入三角形的三条边:");
        double a = scanner.nextDouble();
        double b = scanner.nextDouble();
        double c = scanner.nextDouble();
        try {
            double area = getTriangleArea(a, b, c);
            System.out.println("三角形的面积为:" + area);
        } catch (IllegaException e) {
            System.out.println("输入的三条边无法构成三角形!");
        }
    }
    public static double getTriangleArea(double a, double b, double c) throws IllegaException {
        if (a + b <= c || a + c <= b || b + c <= a) {
            throw new IllegaException("输入的三条边无法构成三角形!");
        }
        double p = (a + b + c) / 2;
        double area = Math.sqrt(p * (p - a) * (p - b) * (p - c));
        return area;
    }
}

你可能感兴趣的:(java,开发语言)