可能是铸造问题-Java

可能是铸造问题-Java,java,casting,Java,Casting,我编写了以下代码: public class Point2 { private double _radius , _alpha; public Point2 ( int x , int y ) { //if one or more of the point values is <0 , the constructor will state a zero value. if (x < 0) {

我编写了以下代码:

public class Point2
{
    private double _radius , _alpha;    

    public Point2 ( int x , int y )
    {
        //if one or more of the point values is <0 , the constructor will state a zero value.
        if (x < 0)  
        {
           x = 0;
        }

        if (y < 0)
        {
           y = 0;
        }
        _radius = Math.sqrt ( Math.pow(x,2) + Math.pow (y,2) ) ;
        _alpha = Math.toDegrees( Math.atan ((double)y/x) );
    }

    public Point2 (Point2 other) // copy constructor
    {
        this._radius = other._radius ;
        this._alpha = other._alpha ;
    }

    public int getX()
    {
       return (int) Math.round ( Math.sin(_alpha)*_radius );
    }

    public int getY()
    {
        return (int) Math.round ( Math.cos(_alpha)*_radius );   
    }

    public void setX (int x)
    {
        if (x >=0 )
        {
            _radius = Math.sqrt ( Math.pow (x,2) + Math.pow(getY(),2) );
            _alpha = Math.toDegree ( Math.atan ((double)getY()/x));
        } 
    }
}
公共类点2
{
专用双半径,α;
公共点2(整数x,整数y)
{
//如果一个或多个点值为=0)
{
_radius=Math.sqrt(Math.pow(x,2)+Math.pow(getY(),2));
_alpha=Math.toDegree(Math.atan((double)getY()/x));
} 
}
}
问题是编译器在以下方面给了我一个错误:
_alpha=Math.toDegrees(Math.atan((double)y/x))上面写着:
“*找不到符号-方法toDegree(double);也许你的意思是:toDegrees(double)*”

有什么问题吗

谢谢

阅读您的代码

    _radius = Math.sqrt ( Math.pow (x,2) + Math.pow(getY(),2) );
    _alpha = Math.toDegree ( Math.atan ((double)getY()/x));
那行写的是数学。toDegree而不是toDegrees

阅读您的代码

    _radius = Math.sqrt ( Math.pow (x,2) + Math.pow(getY(),2) );
    _alpha = Math.toDegree ( Math.atan ((double)getY()/x));

那行写的是数学。toDegree而不是toDegrees

因为您想使用

因为您想使用

我怀疑将负x和y输入值设置为零是否明智。为客户谈论一个令人讨厌的惊喜!在大多数情况下,负值是有意义的。半径和θ作为成员变量的事实表明,它们是复平面中的点。负的x和y值当然有意义


我也同意在变量名中去掉那些可怕的下划线的建议。在当今时代,它们是不必要的,因为IDE可以很容易地突出显示成员变量。如果愿意,您可以在它们前面加上
this.
。下划线只是来自C++和Emacs的一个丑陋的伪像。

< P>我怀疑设置负X和Y输入值等于0的智慧。为客户谈论一个令人讨厌的惊喜!在大多数情况下,负值是有意义的。半径和θ作为成员变量的事实表明,它们是复平面中的点。负的x和y值当然有意义


我也同意在变量名中去掉那些可怕的下划线的建议。在当今时代,它们是不必要的,因为IDE可以很容易地突出显示成员变量。如果愿意,您可以在它们前面加上
this.
。下划线只是来自C++和Emacs的一个丑陋的伪像。

可能无关,但是如果X小于或等于0,则代码会被炸开。你不能被零除


还有,我是唯一一个看到他的代码已经使用复数的人吗?编译器似乎感到困惑。

可能与此无关,但如果x小于或等于零,则代码将被破坏。你不能被零除


还有,我是唯一一个看到他的代码已经使用复数的人吗?编译器似乎有点困惑。

请为事物想出更好的名称。下划线对你不好。编译器给了你最具可读性的建议。请读一下。(其他人刚刚删除了这样一条评论,但我认为这在这里是非常合理的)考虑使用IDE——这一行应该有明确的标记。请为事物想出更好的名称。下划线对你不好。编译器给了你最具可读性的建议。请读一下。(其他人刚刚删除了这样一条评论,但我认为这在这里是非常合理的)考虑使用IDE——这一行应该已经被清楚地标记了。你在这一行上比我快了几秒。你在这一行上比我快了几秒。编译器没有混淆;当然是这样。一点是复数,另一点是单数。角度看得好。我建议使用atan2,因为它知道如何在这种情况下分辨角度是90度(y>0)还是270度(y<0)。哎呀!谢谢@duffymo!我没有向下滚动足够远。啊!编译器没有混淆;当然是这样。一点是复数,另一点是单数。角度看得好。我建议使用atan2,因为它知道如何在这种情况下分辨角度是90度(y>0)还是270度(y<0)。哎呀!谢谢@duffymo!我没有向下滚动足够远。啊!