我对这个问题涉及的技术术语感到困惑:
给出三条直线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
我想出的代码是:
package question3_test;
import java.awt.event.*;
import java.math.*;
public class Triangle_getvalues
{
private int side1, side2, side3;
private double area;
private String message;
public int getSide1()
{
return side1;
}
public void setSide1(int s1)
{
side1 = s1;
}
public int getSide2()
{
return side2;
}
public void setSide2(int s2)
{
side2 = s2;
}
public int getSide3()
{
return side3;
}
public void setSide3(int s3)
{
side3 = s3;
}
public double findArea(int side_1, int side_2, int side_3)throws InvalidValueException
{
int s, a, b,c;
a = side_1;
b = side_2;
c = side_3;
s = ((a + b + c)/2);
area = Math.sqrt(s*(s-a)*(s-b)*(s-c));
//area =
return area;
}
public void validateTriangle(int sidea, int sideb, int sidec) throws InvalidValueException
{
try
{
if((sidea + sideb > sidec)||(sideb + sidec > sidea)||(sidea + sidec > sideb))
{
findArea(side1,side2,side3);
}
}
catch(InvalidValueException excep)
{
message = excep.getMessage();
}
}
}
class InvalidValueException extends Exception
{
public InvalidValueException()
{
super("These values cannot form a valid triangle");
}
}
我想知道的不是我错过了某些东西(如果我遗漏了某些东西,请告诉我),但问这里的主要目的是,这是回答这个问题的正确方法吗?
答案 0 :(得分:3)
你有正确的想法。您只是没有合并代码来匹配您的作业。
构造函数,用于将三个边的长度设置为传入的值。当值无法形成三角形时,构造函数应抛出InvalidValueException对象。
类构造函数看起来像这样。
public Triangle_getvalues(int a, int b, int c) throws InvalidValueException {
validateTriangle(a, b, c);
setSide1(a);
setSide2(b);
setSide3(c);
}
您的validateTriangle方法不应该尝试抛出InvalidValueException并捕获InvalidValueException。选择其中一个。
您的validateTriangle方法不需要调用或执行findArea方法。您只需确定输入长度是否为有效三角形。
以下是它应该如何运作:
public void validateTriangle(int sidea, int sideb, int sidec)
throws InvalidValueException
{
if ((sidea + sideb > sidec) || (sideb + sidec > sidea)
|| (sidea + sidec > sideb))
{
} else {
throw new InvalidValueException;
}
}
答案 1 :(得分:1)
你的构造函数应该是这样的:
public className(int side1, int side 2, int side3) throws yourException {
//initialize your sides here and call your validation method here
}
答案 2 :(得分:0)
这似乎是毕达哥拉斯定理。 答案是(side1 * side2)*(side2 * side2)=(side3 * side3) 如果每一面都是相同的,那将给你所有有效的三角形..
这几乎是家庭作业代码,但了解它的工作原理是基本的。