【发布时间】:2013-11-15 23:49:03
【问题描述】:
我的作业有问题,希望你们能帮助我。作业是这样的:
(IllegalTriangleException) 编程练习 11.1 定义了具有三个边的 Triangle 类。在三角形中,任何两条边的和都大于另一边。 Triangle 类必须遵守此规则。创建 IllegalTriangleException 类,并修改 Triangle 类的构造函数以在创建的三角形的边违反规则时抛出 IllegalTriangleException 对象,如下:
/** Construct a triangle with the specified sides */
public Triangle(double side1, double side2, double side3)
throws IllegalTriangleException {
//Implement it
}
好的。这是三角形类。
import java.lang.Math;
public class Triangle extends GeometricObject {
private double side1 = 1.0;
private double side2 = 1.0;
private double side3 = 1.0;
public Triangle() {
}
public Triangle(double side1, double side2, double side3) {
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
}
public double getSide1() {
return side1;
}
public double getSide2() {
return side2;
}
public double getSide3() {
return side3;
}
public void setSide1(double side1) {
this.side1 = side1;
}
public void setSide2(double side2) {
this.side2 = side2;
}
public void setSide3(double side3) {
this.side3 = side3;
}
public double getArea() {
double p = getPerimeter() / 2;
return Math.sqrt(p * ((p - side1) * (p - side2) * (p - side3)));
}
public double getPerimeter() {
return side1 + side2 + side3 ;
}
public String toString() {
return " Triangle: Side 1 = " + side1 + " Side 2 = " + side2
+ " Side 3 = " + side3;
}
}
IllegalTriangleException 类:
public class IllegalTriangleException extends Exception {
private double perimeter;
/** Construct an exception*/
public IllegalTriangleException(double perimeter) {
super( "The sum of any two sides is greater than the other side" + perimeter);
this.perimeter = perimeter;
}
/**return the side*/
public double getPerimeter() {
return perimeter;
}
}
这是 TriangleWithException 类:
public class TriangleWithException {
//The perimeter of the triangle
private double perimeter;
private double side1 = 1.0;
private double side2 = 1.0;
private double side3 = -1.0;
//Number of objects created
private static int numberOfObjects = 0;
//construct a triangle with perimeter
public TriangleWithException(double side1, double side2, double side3) {
}
//Construct a triangle with a specified perimeter.
public TriangleWithException(double newPerimeter) {
setPerimeter(newPerimeter);
numberOfObjects++;
}
//Return perimeter
public double getPerimeter() {
return perimeter;
}
//set new perimeter
public void setPerimeter(double newPerimeter) throws IllegalArgumentException {
if (newPerimeter >= 0)
perimeter = newPerimeter;
else
throw new IllegalArgumentException("Any two sides needs to be grater than the other side");
}
// Return numberOFObjects
public static int getNumberOfObjects() {
return numberOfObjects;
}
//return area of triangle
public double findArea() {
double p = getPerimeter() / 2;
return Math.sqrt(p * ((p - side1) * (p - side2) * (p - side3)));
}
}
最后是测试程序。
public class TestTriangleWithException {
public static void main(String[] args) {
try {
new TestTriangleWithException(/** What goes here?*/);
new TestTriangleWithException(/** What goes here?*/);
new TestTriangleWithException(/** What goes here?*/);
}
catch (IllegalTriangleException ex) {
System.out.println(ex);
}
System.out.println("Number of objects created: " +
TriangleWithException.getNumberOfObjects());
}
}
class TriangleWithException {
//Perimeter
private double perimeter;
//number of objects created
private static int numberOfObjects = 0;
//Construct a triangle with a specified perimeter
public TriangleWithException() throws IllegalTriangleException {
double side1;
double side2;
double side3;
}
//construcj a triangle
public TriangleWithException(double newPerimeter)
throws IllegalTriangleException {
if (newPerimeter >= 0)
perimeter = newPerimeter;
else
throw new IllegalTriangleException(newPerimeter);
}
//Return numberofobjects
public static int getNumberOfObjects() {
return numberOfObjects;
}
//Return the area of the triangle
/** How do define getPerimeter for the type IllegalTriangleException?
* How do i resolve side1, side2 and side3 as variables?*/
public double findArea() {
double p = getPerimeter() / 2;
return Math.sqrt(p * ((p - side1) * (p - side2) * (p - side3)));
}
}
所以,我目前面临的问题是这些:
如果违反规则,我需要修改 Triangle 类的构造函数以抛出 IllegalTriangleException。
我需要弄清楚Perimeter 是否是我需要的变量,而不是异常类中的边。
我是初学者,所以虽然解决方案对您来说似乎很明显,但它们并不适合我。
任何帮助将不胜感激。
【问题讨论】:
-
要发布大量的代码。请只提供必要的东西。
-
除了对 Triangle 类结构的一般指导外,我看不到 Circle 类的相关性,也不应该在这里。您似乎从字面上理解了 Circle 结构,但对半径采用有效性测试对 Triangle 不起作用。
-
为什么异常有参数“perimeter”?你如何定义一个只有“周长”的三角形?
-
我明白了,所以
Triangle类正在正常运行。您是指所有类吗? -
@CarlosHeuberger 哦,我一直在用我的第一语言编写它,但没有意识到这一点。
Triangle中不仅使用了perimeter吗?