Java,水仙花数,可以编译,但运行后为0

初学Java,下面的水仙花数int那段可以像这样写吗?是格式错了吗?谢谢解答。


public class ConversionDemo{
    public static void main(String[]args){
        for(int i=100;i<=999;i++){
            int a=i%=10;
            int b=i/=10;
            int c=b%=10;
            int d=i/100;
            if(a*a*a+c*c*c+d*d*d==i){
            System.out.println(i); 
            }
        }
    }
}

int a =i%=10相当于int a=i=i%10;a的值是被赋予了i%10但是i的值也被改变了也变成i%10后的值了。后面的运算都是基于改变后的i的值算的,所以格式错了,改成int a=i%10

你这整体取值都不对,相当于变相给i也改了值代码可改为以下:

public static void main(String[] args) {
        for (int i = 100; i <= 999; i++) {
            int a = i / 100;      //取百位
            int b = i / 10 % 10;    //取十位
            int c = i % 10;       //取个位
            if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == i) {
                System.out.println(i);
            }
        }
    }


for(int i=100;i<=999;i++){
              int a = i%10;
              int b = i/10;
              int c = b%10;
              int d = i/100;
              if(a*a*a+c*c*c+d*d*d==i){
                  System.out.println(i); 
              }
          }