2010-01-21 6 views
1

Я пытаюсь вызвать углы из метода угла ниже в методе Rotate90, но я не уверен в синтаксисе. Каков правильный синтаксис?Очень простой вопрос Java

import java.lang.Math; 
public class CartesianPoint implements Point 
{ 
    private double xCoord; 
    private double yCoord; 

    public CartesianPoint (double xCoordinate,double yCoordinate) 
    { 
     xCoord = xCoordinate; 
     yCoord = yCoordinate; 
    } 

public double xCoordinate() 
{ 
    return xCoord; 
} 

public double yCoordinate() 
{ 
    return yCoord; 
} 

public double angle() 
{ 
    double angles; 
    angles = Math.cos(xCoord/Math.sqrt(xCoord*xCoord + yCoord*yCoord)); 
    return angles; 
} 

public double radius() 
{ 
    double radius; 
    radius = (yCoord*yCoord + xCoord*xCoord); //? 
    return radius; 
} 

public Point rotate90() 
{ 
    double rotated; 
    rotated = angles.angle + 90.0; //██████████ Error here ██████████ 
    return rotated; 
} 

public double distanceFrom(Point other) 
{ 
    return 0; 
} 

}

+3

Вы забыли тег «домашняя работа»? – Carsten

+2

@ Карстен смешной комментарий. Тем не менее, даже если это домашнее задание, вы можете помочь человеку. – Alfred

+4

В отличие от половины первых таймеров, которые задают домашние вопросы, по крайней мере Кевин на самом деле написал какой-то код. Вы должны дать ему похвалы, по крайней мере, за попытку. –

ответ

3

Я думаю, что вы имеете в виду

rotated = angle() + 90.0; 

Только я думаю, вы обнаружите, что Math.cos использует радианы не градусы, так что вы не собираетесь, чтобы получить результат, который вы Думаю, что да. И разве это не должно быть дугой, а не косинусом? Нечто подобное могло бы быть больше, что вы ищете:

public double angle() 
{ 
    return Math.atan2(ycoord, xcoord) * 180/Math.PI; 
} 

Если вы хотите Rotate90 вернуть новую точку, на 90 градусов от текущей точки, а затем изменить его на следующее:

public Point rotate90() 
    { 
     return new CartesianPoint(-yCoord, xCoord); 
    } 
+0

Это правильный синтаксис, который вам нужен. – ACE2100

+0

Спасибо, я буду использовать это. Но мне нужно вызвать значение, возвращаемое из угла() (которое является значением, хранящимся под переменными углами) в моем методе rotate90, поэтому я могу добавить 90 к переменной углов. Я попробовал то, что вы предложили, но это не сработало – dukevin

+0

@ Kevin, там нет ни одного «угла». Вы вычисляете новый каждый раз, когда вы вызываете angle() из координаты X и Y. Если вы хотите повернуть координаты X и Y, вам нужно будет их изменить, а не просто добавить 90 к расчетному углу. Это совсем другая проблема. –

1

Метод вызовов в Java всегда имеют конечные скобки, даже если они не имеют какие-либо аргументов:

rotated = angle() + 90.0; 
0

Метод вызов требует скобки, даже если нет необходимых параметров. Это отличается от других языков, например. groovy.

0

Чтобы ответить на ваш вопрос напрямую: если вы хотите иметь доступ к переменной «углы» из-за пределов «угла», вы должны сделать ее переменной класса. То есть объявите его вне любой функции, например, вы объявили xCoord и yCoord. Затем обратитесь к нему простым именем без ссылки на функцию, которая его создала.

Обратите внимание, что если rotate90 пытается ссылаться на углы перед вызовом углов(), то угол будет содержать нуль (или любое другое значение по умолчанию, которое вы установили) и вряд ли будет полезным.

Мне непонятно, что именно вы пытаетесь выполнить. Я думаю, что ваше намерение состоит в том, что функция углов будет принимать косинус дуги, а не косинус.

Смежные вопросы