Метод sqrt не определен в eclipse?

Я работаю над классом для школьного задания, где мы пытаемся использовать интерфейсы/сравнения, а корневой класс с именем shape используется для определения других классов форм, таких как прямоугольники, круги, трапеции и т. д. Проблема, с которой я сталкиваюсь, заключается в использовании метода Square root и метода Power при попытке создать класс трапеции.

Что я пытаюсь сделать, так это получить 3-ю и 4-ю стороны трапеции, и поскольку все они будут правильными трапециями, я могу взять переменную side1 (верхняя сторона трапеции), вычесть ее из side2 ( Нижняя сторона трапеции), разделите ее на два, что каждая сторона имеет нижнюю половину прямоугольного треугольника, который я пытаюсь создать, а затем выполните теорему Пифагора, чтобы получить эту надоедливую третью сторону.

Проблема в том, что каждый раз, когда я пытаюсь запустить метод 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();
}

person ArcaneMusic    schedule 13.04.2014    source источник
comment
Ну... метод определен?   -  person Sotirios Delimanolis    schedule 14.04.2014
comment
Используйте Math.sqrt() вместо простого sqrt()   -  person Braj    schedule 14.04.2014
comment
Прочтите сообщение об ошибке. Это не ложь.   -  person user2864740    schedule 14.04.2014


Ответы (1)


Вам нужно статически импортировать метод, чтобы использовать его как неквалифицированный метод.

import static java.lang.Math.sqrt;

или использовать

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

(импорт из java.lang не нужен, так как эти классы импортируются по умолчанию)

person Reimeus    schedule 13.04.2014
comment
В качестве альтернативы, поскольку Math уже импортирован, можно изменить вызов на Math.sqrt(). - person Paul Hicks; 14.04.2014