我正在为一个学校作业开设课程,我们正在尝试使用接口/可比对象,并且正在使用一个名为shape的根类来定义其他形状类,如矩形,圆形,梯形等。我遇到的问题是在尝试制作梯形类时使用Square root方法和Power方法。
我要做的是获得梯形的第3和第4侧,并且因为这些都是规则的梯形,我可以采用变量side1(梯形的顶边),减去从side2(梯形的底部),将它除以两个s,每一边都有我试图创建的右三角形的下半部分,然后做毕达哥拉斯定理得到那个讨厌的第三面。
问题在于每次我尝试运行Square root(sqrt)或power(pow)方法来执行此操作时,eclipse都会给出一个错误,指出“方法sqrt(double)未定义为类型Trapezoid“我不知道我在这里缺少什么,所以任何帮助都将不胜感激。
我的代码如下:
import java.lang.Math;
public class Trapezoid implements Shape {
public double side1;
public double side2;
public double height;
public Trapezoid(double side1, double side2, double height){
this.side1 = side1;
this.side2 = side2;
this.height = height;
}
public double perimeter(){ //THIS IS THE METHOD CAUSING PROBLEMS!
double tosser = sqrt((((side2 - side1) / 2 *(side2 - side1) / 2) + (height*height) ) );
return (side1 + side2 + 2 * tosser );
}//end perimeter
public double area(){
return (((side1 + side2) / 2) * height);
}//end area
public String toString(){
return "The area of the trapezoid is" + area() + ".";
}//end toString
public int compareTo(Shape that){
int larger = 0;
if(this.area() > that.area())
larger = 1;
else if(this.area() < that.area())
larger = -1;
return larger;
}
}
此外,形状类也相当小,但我无法对此作业进行任何更改:
public interface Shape {
public double area();
public double perimeter();
}
答案 0 :(得分:3)
您需要静态导入方法以将其用作非限定方法
import static java.lang.Math.sqrt;
或使用
double tosser = Math.sqrt(...);
(从java.lang
导入是不必要的,因为默认导入这些类)