需求:用java求水仙花数,不知道思路错在哪?



public class test5 {
    public static void main(String[] args) {
        int i;
        for (i = 100; i < 1000; i++) {
            int a = i;
            int x = i;
            int sum = 0;
            while (i != 0) {
                a %= 10;
                sum += a * a * a;
                i /= 10;
                a = i;
            }
            if (sum == x)
                System.out.println(x);
        }
    }
}

while的条件不要用i,i已经被for循环用了,你在while中又把i赋值,会变成死循环。可以在第8行下,设置一个变量y = i,然后在while中使用y

public class NarcissisticNumber {
    public static void main(String[] args) {
        for(int i = 100; i < 1000; i++) {
            narcissisticNumber(i);
        }
    }
    public static void narcissisticNumber(int num) {
        int a = num%10;  //求取个位
        int b = (num/10)%10;  //求取十位
        int c = num/100;  //求取百位
        if((Math.pow(a,3) + Math.pow(b,3) + Math.pow(c,3)) == num) {
            System.out.print(num + " ");
        }
    }
}

你的while循环结束的条件是i == 0
for循环结束的条件是i >= 1000
这是个死循环啊