我无法让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代替数字)。

点赞
评论