Java 编写类:创建一个与给定测试人员一起工作的RightTriangle类
我正在做作业,现在有点迷路了。作业要求我创建一个与给定驱动程序一起工作的RightTriangle类。详情如下: 您的RightTriangle类将需要两个构造函数:Java 编写类:创建一个与给定测试人员一起工作的RightTriangle类,java,Java,我正在做作业,现在有点迷路了。作业要求我创建一个与给定驱动程序一起工作的RightTriangle类。详情如下: 您的RightTriangle类将需要两个构造函数: 一种参数化构造函数,取三角形的两条边并计算斜边。如果任一分支小于或等于零,则引发异常 默认构造函数,将两个支腿设置为1并计算斜边。此构造函数应使用“This”命令调用参数化构造函数 您的RightTriangle类将需要以下公共方法: 返回双精度值的getArea()方法 返回双精度 一个toString方法(),它返回以下
- 一种参数化构造函数,取三角形的两条边并计算斜边。如果任一分支小于或等于零,则引发异常
- 默认构造函数,将两个支腿设置为1并计算斜边。此构造函数应使用“This”命令调用参数化构造函数
- 返回双精度值的getArea()方法
- 返回双精度
- 一个toString方法(),它返回以下格式的字符串:“边为1.0、1.0和斜边为1.4142135623730951的直角三角形。”
RightTriangleDriver.java
import java.util.*;
public class RightTriangleDriver
{
public static void main(String[] args)
{
/*
Menu:
1 - test default constructor and toString
2 - test parameterized constructor and toString
3 - test getArea
4 - test getPerimeter
*/
Scanner kb = new Scanner(System.in);
int option = kb.nextInt();
switch(option)
{
case 1: //1 - test default constructor and toString
try
{
System.out.println("Testing default constructor, then toString()");
RightTriangle r = new RightTriangle();
System.out.println("Got: " + r);
}
catch(Throwable ex)
{
System.out.println("\tgot: " + ex);
}
break;
case 2: //2 - test parameterized constructor and toString
try
{
System.out.println("Testing parameterized constructor, then toString()");
double side1 = kb.nextDouble();
double side2 = kb.nextDouble();
RightTriangle r = new RightTriangle(side1, side2);
System.out.println("Got: " + r);
}
catch(Throwable ex)
{
System.out.println("Got: " + ex);
}
break;
case 3: //3 - test getArea
try
{
System.out.println("Testing getArea()");
double side1 = kb.nextDouble();
double side2 = kb.nextDouble();
RightTriangle r = new RightTriangle(side1, side2);
System.out.println("Got: " + r.getArea());
}
catch(Throwable ex)
{
System.out.println("Got: " + ex);
}
break;
case 4: //4 - test getPerimeter
try
{
System.out.println("Testing getPerimeter()");
double side1 = kb.nextDouble();
double side2 = kb.nextDouble();
RightTriangle r = new RightTriangle(side1, side2);
System.out.println("Got: " + r.getPerimeter());
}
catch(Throwable ex)
{
System.out.println("Got: " + ex);
}
break;
default:
System.out.println("I don't understand your request");
}
}
}
这就是我到目前为止得到的
public class RightTriangle
{
private double side1;
private double side2;
//constructors
public RightTriangle()
{
this(1.0, 1.0);
}
public RightTriangle(double s1, double s2)
{
if(s1 > 0 && s2 > 0)
side1 = s1;
side2 = s2;
else
throw new IllegalArgumentException("All triangle edges must have positive length");
}
//Methods
public String toString()
{
return "A right triangle with edges " + side1 + ", " + side2 + " , and hypotenuse " + Math.sqrt((side1 * side1) + (side2 * side2)) + ".";
}
//get Area
public double getArea()
{
return side1 * side2 / 2;
}
//get Perimeter
public double getPerimeter()
{
return side1 + side2 + Math.sqrt((side1 * side1) + (side2 * side2));
}
//get hypotenuse
public double getHypotenuse()
{
return Math.sqrt((side1 * side1) + (side2 * side2));
}
- 我被卡住了,因为我不知道如何让它们在所有的测试中工作。任何建议都将不胜感激李>
RightTriangle r = new RightTriangle();
System.out.println("Got: " + r);
此代码来自RightTriangleDriver。当p
时,一个直角三角形对象被赋予System.out.println,它的toString()
值被打印出来
因此,它与以下内容相同:
RightTriangle r = new RightTriangle();
System.out.println("Got: " + r.toString());
根据作业中的规范:
您的RightTriangle类将需要以下公共方法:…
一个toString方法(),它返回以下格式的字符串:“边为1.0、1.0和斜边为1.4142135623730951的直角三角形。” 编辑2:toString的更详细描述
toString
适用于java中的每个对象。默认情况下,您自己的类“toString
方法将返回如下内容”RightTriangle@l13e8ed".
在该赋值的规范中,您的任务是使toString()返回对象的特定描述,而不是默认描述。我们通过重写toString
方法来实现这一点
当您想要重写一个方法时,您可以创建一个新的方法,其声明(返回类型、名称和参数类型)与超类中的声明相同。还有更高级的规则,但一般来说,您只需创建具有相同声明的方法。在这种情况下,在RightTriangle
中创建公共字符串toString()
将覆盖默认存在的toString():
public String toString(){
return "A right triangle with edges " + firstSide + ", " + secondSide +", and hypotenuse " + hypotenuse + ".";
}
非常感谢。我有什么办法可以联系你吗?这是本着堆栈溢出的精神,试图澄清一个问题,并回答这个问题,在网站本身。这使得这个问题及其答案能够帮助未来的读者——如果私下提供帮助,那么在大多数情况下,任何一方都不会回来告诉我们解决方案是什么。@halfer我知道,但Xyexs提到他没有这样做的声誉(如果我没弄错的话)。@Apple我输了1分。我将编辑答案。@Xyexs您能详细说明一下吗?如何覆盖它?