以下问题令我困惑,我不确定我的想法是否正确。这是问题
给出三条直线a,b& C。他们将能够形成一个 三角形,假设任何两条线的总和总是大于 第三行(即a + b> c和b + c> a和a + c
B)。使用以下代码编写Java类Triangle:
Attributes: length of the three sides of the triangle
Behaviour:
- 构造函数,用于将三边的长度设置为传入的值。构造函数应抛出InvalidValueException 当值不能形成三角形时对象。
- findArea()方法使用公式区域计算三角形对象的面积= a + b + c
问题的下一部分是创建GUI。我已经做到了。
所以上面的问题是它要求我只是简单地获取价值,但是从哪里来?是通过GUI吗?或者命令行基地?问题不是具体的,所以我可以假设只是创建准备好接受这些值的变量吗?
答案 0 :(得分:1)
如果你被要求开发一个GUI我真的认为必须通过它输入值...而且Triangle类必须有3个属性:a,b和c。
答案 1 :(得分:0)
为什么不在测试类或类似的情况下暂时对其进行硬编码,例如
new Triangle(3,4,5);
在这种情况下,您有兴趣测试各种函数的代码(有效与无效),因此我会编写一个具有特定数据集的测试(或多个测试),例如。
// expected to be ok
new Triangle(3,4,5);
// expected exception
new Triangle(1,1,3);
在后一种情况下,如果没有异常,你会想要捕获异常并使用错误解救你的程序。
您可能需要查看unit test frameworks来帮助您解决此问题。
编辑:您修改后的问题现在包含Triangle
方的设置者。我认为你最好只让字段读取,在构造上执行此操作并从构造函数中抛出异常。如果您需要setter,那么您必须在某个阶段调用validate()
方法,否则您可能会创建一个无效的Triangle
。请注意,在每次调用者调用时都无法调用验证器,因为您可能设置了多个边,而中间状态可能无效。
答案 2 :(得分:0)
所以上面的问题是它要求我只是简单地获取价值,但是从哪里来?
来自构造函数参数。这就是以下意思:
“构造函数,它将三面的长度设置为传入的值。”
例如:
public Triangle(int a, int b, int c) {
this.a = a; this.b = b; this.c = c;
}
是通过GUI吗?或者命令行基地?
GUI(或命令行入口点)可能会从某处获取值并将它们作为构造函数参数传递。或者...... 任何代码都可以简单地实例化具有侧面硬连线值的Triangle
; e.g。
Triangle pythagorasFavourite = new Triangle(3, 4, 5);
这个问题并不具体,所以我可以假设只是创建准备好接受这些值的变量吗?
实际上,它是具体的:见上文。
但请注意,三角形的区域不是area = a + b + c
。真正的公式是:
三边长度已知的三角区域
1/4 * square-root [ P * (P-2a) * (P-2b) * (P-2c)]
其中
P
是总周长a
,b
和c
是三方的长度。
参考:http://library.thinkquest.org/20991/gather/formula/data/297.html