Java无自定义构造器Angle类计算角度差结果恒为0问题求解
核心问题
你代码里的gradmass和bogenmass两个属性被声明为static静态变量,这类变量属于类本身,所有Angle实例共享同一份值,每次调用set方法修改都会覆盖全局的取值。因此你先后创建135°和90°两个Angle实例时,后创建的90°会把全局属性覆盖,最终计算差值时两个实例读取到的度数都是90,结果自然为0。
解决方案
完全符合你「不新增自定义构造器、不修改非静态方法」的要求,仅需要将两个属性的static修饰符删除,改为实例级别的成员变量即可,每个实例会独立保存自己的角度值,不会互相覆盖:
// 仅修改属性定义行,删除static修饰符 private double gradmass = 0; private double bogenmass = 0;
修改后测试调用Angle.degrees(135).minus(Angle.degrees(90)).getDegrees()即可得到预期的45结果。
内容的提问来源于stack exchange,提问作者Atlas v2
相关产品推荐
相关产品推荐

