我有一些简单的代码问题。我还没有看到代码中的问题出在哪里。由于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),但是您想执行整数除法。使用intlong(或BigInteger)代替。

08-18 19:41