求圆面积自定义异常类

计算圆的面积,其中PI取3.14,圆半径为负数时应抛出异常,输出相应提示。根据提供的主类信息,编写Circle类和CircleException类,以及在相关方法中抛出异常。

函数接口定义:

裁判测试程序:

在这里给出主类
import java.util.*;
public class Main {

 public static void main(String[] args) {
        double s=0;
        Scanner sc=new Scanner(System.in);
        double r1,r2;
        r1=sc.nextDouble();
        r2=sc.nextDouble();
        Circle c1=new Circle(r1);
        Circle c2=new Circle(r2);
        try{

        s = c1.area();
        System.out.println(s);
        s = c2.area();
        System.out.println(s);
        }
        catch (CircleException e){
            e.print();
        }
   }
}


/* 请在这里填写答案 编写Circle 和CircleException类*/

输入样例:

在这里给出一组输入。例如:

3.5 -3.5

输出样例:

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

38.465
圆半径为-3.5不合理

由于程序在try语句中会调用area()方法,所以我们可以在Circle类中的area()方法中加上判断半径r是否会产生异常,如果圆的半径小于零,就说明产生了异常,这时我们手动创建一个异常对象(一般的,SUN公司自己的异常类,当产生异常时,会自动创建一个异常对象),并将异常对象抛出(这里处理异常有两种方法,抛出异常和利用try..catch语句抓住异常,这里我选择的是抛出异常),throw e;语句即为抛出语句,由于area()方法在声明时后面有throws CircleException语句(抛出CircleException异常),所以说明我们将异常抛给了调用area()方法的地方(即主方法中),调用的地方选择用tyr..catch语句来处理异常,所以catch语句中调用print()方法,来处理异常。

class Circle{
    double r;
    Circle(double r) {
        this.r = r;
    }
    public double area() throws CircleException{
        if(r<0)
        {//判断异常是否会产生
            CircleException e = new CircleException(r);//在创建对象时将半径赋值给CircleException对象
            throw e;//抛出异常
        }
        return 3.14*r*r;
    }
}
class CircleException extends Exception {
    double r;
    CircleException(double r){//有参数的构造方法
        this.r = r;
    }
    public void print () {//被调用的print语句
        System.out.println("圆半径为"+r+"不合理");
    }
}

求圆面积自定义异常类_第1张图片

 异常处理最近才学习,讲解的不是很清楚,望采纳。

你可能感兴趣的:(ipad,ios,java)