Java问题包含摘要,接口和异常

问题描述 投票:0回答:2

[使用名为Colorable的无效方法设计名为howToColor()的接口。

设计一个名为Triangle的类,扩展GeometricObject并实现Colorable

三角实现howToColor方法以显示消息“对所有三面都着色”。

Triangle实现toString方法以显示其颜色和侧面。

在三角形中,任意两个边的总和大于另一边。 Triangle类必须遵守此规则。创建TriangleException类,并完成并实现Triangle类的构造函数,如果创建的三角形的边违反规则,则抛出TriangleException对象。

测试程序的输出应如下所示。

    abstract class GeometricObject {

    private String color = "white";

    protected GeometricObject(String color) {
        this.color = color;
    }

    public String toString() {
        return "Color: " + color;
    }

    public abstract double getPerimeter();
}

class Triangle {

    private double side1, side2, side3;

    public Triangle(double side1, double side2, double side3) throws TriangleException {

    }

}

class TriangleException {

}

代码正在测试:

try {
    Triangle t1 = new Triangle(1.5, 2, 3);
    System.out.println(t1.toString());
    System.out.println("Perimeter for t1: " + t1.getPerimeter());
    t1.howToColor();

    Triangle t2 = new Triangle(1, 2, 3);
    System.out.println(t2.toString());
    System.out.println("Perimeter for t2: " + t2.getPerimeter());
    t2.howToColor();
} catch (TriangleException ex) {
    System.out.println(ex.getMessage());
    System.out.println("Side1: " + ex.getSide1());
    System.out.println("Side2: " + ex.getSide2());
    System.out.println("Side3: " + ex.getSide3());
}

根据此代码结果必须是:

Color: red Sides: 1.5, 2.0, 3.0
Perimeter for t1: 6.5
Color all three sides.
Triangle inequality violation!
Side1: 1.0
Side2: 2.0
Side3: 3.0

因此,示例中的输入必须为true。例如,对于t2.getPerimeter()语句,我们必须通过side1 + side2 + side3的返回值创建一个getPerimeter方法。但是t2部分不属于我们,它属于用户。

我无法回答这个问题,需要您的帮助。第一步,我遇到了一个错误。我可以解决其他部分,但不能解决引发Exception部分。我在Eclipse中测试了代码的原始版本(未做任何更改),但出现了throws Exception错误。如果您尝试像我这样的代码,您也会收到错误消息。现在我该如何解决这个问题,我是Java新手。

interface abstraction
2个回答
0
投票

class TriangleException替换class TriangleException extends Exception。所有用户定义的异常都应该是Exception的子类。


0
投票
abstract class GeometricObject {
    private String color = "white";
    protected GeometricObject(String color) {
        this.color = color;
    }

        public String toString() {
            return "Color: " + color;
        }

        public abstract double getPerimeter();
    }

interface Colorable{
    public void howToColor();
}
class Triangle extends GeometricObject implements Colorable {
    private double side1, side2, side3;
    public Triangle(double side1, double side2, double side3) throws TriangleException {
        this.side1 = side1;
        this.side2 = side2;
        this.side3 = side3;
        if(side1 + side2 <= side3) {
            System.out.println("Triangle inequality violation!");
        }
        else if(side1 + side3 <= side2) {
            System.out.println("Triangle inequality violation!");
        }
        else if(side2 + side3 <= side1) {
            System.out.println("Triangle inequality violation!");
        }
}
    public void howToColor() {
        System.out.println("Color all three sides.");
    }
    public double getPerimeter() {
        return side1 + side2 + side3;
    }   
}
class TriangleException extends Exception{
    }

这是代码的最后状态。异常部分中仍然有错误。对于包含throws关键字的行,它说:“隐式超级构造函数GeometricObject()未定义。必须显式调用另一个构造函数。”我还需要一个归类为getMessage的方法,因为用户运行一条名为ex.getMessage()

的语句
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.