【问题标题】:Java Question Containts Abstract, Interface and ExceptionJava问题包含抽象、接口和异常
【发布时间】:2019-11-30 19:32:29
【问题描述】:

使用名为howToColor() 的void 方法设计一个名为Colorable 的接口。

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

Triangle 实现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

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

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

【问题讨论】:

  • 请将错误文本添加到问题中。
  • "不能抛出 TriangleException 类型的异常;异常类型必须是 Throwable 的子类"

标签: interface abstraction


【解决方案1】:

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

【讨论】:

  • 这解决了我的异常错误,谢谢。我继续解决剩下的代码。如果我有任何错误,我可能会再写一次。再次感谢。
  • @Zuko 如果它解决了你的问题,请接受这个答案。
猜你喜欢
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 2011-07-02
相关资源
最近更新 更多