可能是铸造问题-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!我没有向下滚动足够远。啊!