水仙花数是指一个 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("这个数不是水仙花数");
}
}
不配。
为啥不把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才是对应的数字