方法sqrt在eclipse中是未定义的?

时间:2014-04-13 22:19:19

标签: java sqrt

我正在为一个学校作业开设课程,我们正在尝试使用接口/可比对象,并且正在使用一个名为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();
}

1 个答案:

答案 0 :(得分:3)

您需要静态导入方法以将其用作非限定方法

import static java.lang.Math.sqrt;

或使用

double tosser = Math.sqrt(...); 

(从java.lang导入是不必要的,因为默认导入这些类)