求水仙花数代码(Java):

水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。

import.java.util.Scanner;
public class One {
    public static void main(String[] args) {
        Scanner myScanner = new Scanner(System.in);
        String num = myScanner.next();
        char a = num.charAt(0);
        char b = num.charAt(1);
        char c = num.charAt(2);
        int a1 = a * a * a;
        int a2 = b * b * b;
        int a3 = c * c * c;
        int c2 = a1 + a2 + a3;
        String c1 = c2 + "";
        if(c1.equals(num)) {
            System.out.println("这个数是水仙花数");
        } else {
            System.out.println("这个数不是水仙花数");
        }

    }
}

各位我输入153,为何输出这个数不是水仙花数呢?

最好输入整型,再取每一位,不用要字符串计算,另外整型对比要用 等等于:

public static void main(String[] args) {
            Scanner myScanner = new Scanner(System.in);
            int num = myScanner.nextInt();
            int a = num/100;
            int b = num/10%10;
            int c = num%10;
            int a1 = a * a * a;
            int a2 = b * b * b;
            int a3 = c * c * c;
            int c2 = a1 + a2 + a3;
            
            if(c2==num) {
                System.out.println("这个数是水仙花数");
            } else {
                System.out.println("这个数不是水仙花数");
            }
     
        }

img

不配。
img

为啥不把num转换为整型进行比较呢
int n = Integer.parseInt(num);
if(c2 == n)
System.out.println("这个数是水仙花数");
上面的判断修改一下:
char a = num.charAt(0);
a = a-'0';
char b = num.charAt(1);
b = b-'0';
char c = num.charAt(2);
c = c-'0';
这样a,b,c才是对应的数字