0

下面的问题让我很困惑,我不确定我的想法是否正确。这是问题

给定三条直线a,b和c。只要任何两条线的总和总是大于第三条线(即 a + b > c 和 b + c > a 和 a + c),他们就能够形成一个三角形

乙)。使用以下内容编写 Java 类 Triangle:

Attributes: length of the three sides of the triangle 
Behaviour:
  • 将三个边的长度设置为传入的值的构造函数。当这些值不能形成三角形时,构造函数应该抛出一个 InvalidValueException 对象。
    • findArea() 方法使用公式 area = a +b+c 计算三角形对象的面积

只是提醒一下问题的下一部分是创建一个 GUI。我已经这样做了。

所以上面的问题是它要求我只是简单地获取值,但从哪里获取?是通过图形用户界面吗?还是命令行基础?这个问题并不具体,所以我可以假设简单地创建准备接受这些值的变量吗?

4

3 回答 3

1

好吧,如果您被要求开发一个 GUI,我真的认为必须通过它输入值......并且 Triangle 类必须具有 3 个属性:a、b 和 c。

于 2012-10-11T09:00:36.360 回答
0

所以上面的问题是它要求我只是简单地获取值,但从哪里获取?

从构造函数参数。这就是下面的意思:

“将三边长度设置为传入值的构造函数。”

例如:

    public Triangle(int a, int b, int c) {
        this.a = a; this.b = b; this.c = c;
    }

是通过图形用户界面吗?还是命令行基础?

GUI(或命令行入口点)可能会从某处获取值并将它们作为构造函数参数传递。或者......任何代码都可以简单地实例化 aTriangle与侧面的硬连线值;例如

    Triangle pythagorasFavourite = new Triangle(3, 4, 5);

这个问题并不具体,所以我可以假设简单地创建准备接受值的变量吗?

实际上,它是具体的:见上文。


但是请注意,三角形的面积不是area = a + b + c。真正的公式是:

已知三边长时的三角形面积为

 1/4 * square-root [ P * (P-2a) * (P-2b) * (P-2c)]

其中P是总周长abc是三边的长度。

参考: http: //library.thinkquest.org/20991/gather/formula/data/297.html

于 2012-10-11T08:53:51.613 回答
0

为什么不暂时在测试类或类似的类中对其进行硬编码,例如

new Triangle(3,4,5);

在这种情况下,您有兴趣针对各种功能(有效与无效)测试您的代码,因此我将编写一个具有特定数据集的测试(或多个测试),例如

   // expected to be ok
   new Triangle(3,4,5);

   // expected exception
   new Triangle(1,1,3);

在后一种情况下,如果您没有收到异常,您可能希望捕获异常并以错误退出您的程序。

您可能想查看单元测试框架来帮助您解决这个问题。

编辑:您修改后的问题现在包含Triangle双方的二传手。我认为您最好将字段设为只读,在构造时执行此操作并从构造函数中抛出异常。如果您需要设置器,那么您必须validate()在某个阶段调用该方法,否则您可能会创建一个Triangle无效的方法。请注意,您不能在每次调用 setter 时调用验证器,因为您可能正在设置多个边并且中间状态可能无效。

于 2012-10-11T08:43:42.980 回答