Java的编程题,希望各位能解答解答

1、定义一个接口,包括两个方法:求三角形面积和求圆面积;
2、自定义异常类:当三角形的两边长度之和小于第三边,抛出异常;
3、定义一个类,实现上述接口,及异常处理;4、在PUBLIC CLASS中通过键盘输入相应的数值, 当发生异常时,程序会提示异常; 当没有异常发生时,程序会正确输出所求结果;

/*
接口
*/
public interface Method {
    void CircularArea(double r);
    void TriangleArea(double x, double y, double z) throws TriangleException;
}
/*
实现类
*/
public class MethodImpl implements Method{

    @Override
    public void CircularArea(double r) {
        double p=3.14;
        double area=p*r*r;
        System.out.println(area);
    }

    @Override
    public void TriangleArea(double x, double y, double z) throws TriangleException {
        if (x + y > z && x + z > y && y + z > x) {
            double p = (x + y + z) / 2;
            double area = Math.sqrt(p * (p - x) * (p - y) * (p - z));
            System.out.println(area);
        } else {
            throw new TriangleException("你输入的数据不能构成三角形");
        }
    }
}
/*
自定义异常
*/
public class TriangleException extends Exception{
    public TriangleException() {
    }

    public TriangleException(String message) {
        super(message);
    }
}
/*
Main测试类
*/
public class Main {
    public static void main(String[] args) throws TriangleException {
        Method m=new MethodImpl();
        Scanner sc=new Scanner(System.in);
        //圆
        System.out.println("请输入圆的半径:");
        double r=sc.nextByte();
        System.out.print("圆的面积为:");
        m.CircularArea(r);
        System.out.println("---------------");
        //三角形
        System.out.println("请输入三角形边a:");
        double x=sc.nextByte();
        System.out.println("请输入三角形边b:");
        double y=sc.nextByte();
        System.out.println("请输入三角形边c:");
        double z=sc.nextByte();
        System.out.print("三角形的面积为:");
        m.TriangleArea(x,y,z);

    }
}

正常数据运行结果:

img


异常数据:

img

有用望采纳

接口

public interface AreaInterface {

    Double PI = Double.valueOf(3.14);

    void calTriangleArea();

    void calCircleArea();

}

自定义异常类

public class CalAreaIException extends Exception {

    private String msg;

    public CalAreaIException(String msg) {
        super(msg);
        this.msg = msg;
    }

    @Override
    public void printStackTrace() {
        super.printStackTrace();
        System.out.println(msg);
    }
}

实现类

public class AreaImpl implements AreaInterface{

    static final Scanner sc = new Scanner(System.in);
    /**
     * 计算三角形面积
     */
    @Override
    public void calTriangleArea() {
        System.out.println("请输入三角形是三条边:");
        System.out.println("第一条边:");
        String a = sc.next();
        System.out.println("第二条边:");
        String b = sc.next();
        System.out.println("第三条边:");
        String c = sc.next();
        double aa = Double.valueOf(a);
        double bb = Double.valueOf(b);
        double cc = Double.valueOf(c);
        // 判断三条边是否符合规范
        if ((aa + bb) > cc
            && (aa + cc) > bb
            && (bb + cc) > aa) {
            // 计算三角形面积
            double p = (aa + bb + cc) / 2;
            double s = Math.sqrt(p*(p-aa)*(p-bb)*(p-cc));
            System.out.println("该三角形面积为:" + s);
        } else {
            try {
                throw new CalAreaIException("任意两边之和不能小于第三边!");
            } catch (CalAreaIException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 计算圆面积
     */
    @Override
    public void calCircleArea() {
        System.out.println("请输入圆的半径:");
        String s = sc.next();
        double radius = Double.valueOf(s);
        double area = PI.doubleValue() * radius * radius;
        System.out.println("圆的面积为:" + area);
    }

    /**
     * 测试
     * @param args
     */
    public static void main(String[] args) {
        AreaInterface areaInterface = new AreaImpl();
        areaInterface.calTriangleArea();
        areaInterface.calCircleArea();
    }

}