ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

求圆面积自定义异常类

2021-11-28 16:06:42  阅读:203  来源: 互联网

标签:语句 自定义 area 圆面积 double CircleException Circle 异常


计算圆的面积,其中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+"不合理");
    }
}

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

标签:语句,自定义,area,圆面积,double,CircleException,Circle,异常
来源: https://blog.csdn.net/qq_52391639/article/details/121588646

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有