我无法让Java中的阿姆斯特朗编号的for循环正常工作

因此,我尝试查找1-500之间的每个阿姆斯壮编号。我只需要为此使用For循环,我知道人们也可以使用While循环。我不确定在这里我做错了什么。它只给我375,但我知道153这样的数字也是一个阿姆斯特朗数。 `

在这里输入代码: 公共类ArmstrongNumber {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    //Armstrong numbers 1-500

    int D1;
    int D2; 
    int D3;



    for (int number = 1; number <= 500 ; number++) {
        int temp=number;
        D1=number%10; //ones

        temp= temp/10;
        D2=number%10; //tens

        temp= temp/10;
        D3=number%10; //hundreds

        if( ((D1*D1*D1) + (D2*D2*D2) + (D3*D3*D3)) == number)
        {
    System.out.println(number + " is a Armstrong number");
        }

    }


    }

}
评论
  • taut
    taut 回复

    You have to use remainder operation (%) to tmp:

    for (int number = 1; number <= 500; number++) {
         int temp = number;
         D1 = temp % 10; //ones
    
         temp = temp / 10;
         D2 = temp % 10; //tens
    
         temp = temp / 10;
         D3 = temp % 10; //hundreds
    
         if (((D1 * D1 * D1) + (D2 * D2 * D2) + (D3 * D3 * D3)) == number) {
              System.out.println(number + " is a Armstrong number");
         }
    }
    

    )))

  • 伤的太彻底
    伤的太彻底 回复

    您应该写D2 = temp%10,D3 = temp%10(用temp代替数字)。