我有一些简单的代码问题。我还没有看到代码中的问题出在哪里。由于153是Armstrong编号,因此在应返回true时返回false。
以下是我的代码:
public class Armstrong {
static double nArms, unidad, decena, centena, aux;
Armstrong(){
}
Armstrong(double nArms){
this.nArms = nArms;
}
public boolean esArmstrong(double nArms){
aux = nArms % 100;
centena = nArms / 100;
decena = aux / 10;
unidad = aux % 10;
this.nArms = Math.pow(unidad, 3) + Math.pow(decena, 3) +Math.pow(centena, 3);
if(this.nArms == nArms){
return true;
}else{
return false;
}
}
public static void main(String[] args) {
Armstrong arms = new Armstrong();
System.out.println(arms.esArmstrong(153));
}
}
最佳答案
当您打算进行整数运算时,您正在使用double
。例如,当你写
centena = nArms / 100;
您正在执行浮点除法,(并且
centena
被分配了值1.53
),但是您想执行整数除法。使用int
,long
(或BigInteger)代替。