输出水仙花数,代码运行没有问题,但是运行的结果少了许多,不知道是哪里有问题。
c = i % 10
取个位的时候应该对10取余,取出个位, 而不是对100取余。
现在代码里是对100取余,c是两位数,会缩小结果的范围。
c=i%10
第9行求个位数错了,个位数应该是原数字对10取余数,改为 c = i % 10。
/*
10. 判断一个三位数是否是水仙花数,如果是,输出YES,如果不是,输出NO
说明: 水仙花就是一个数的每个数字的立方和等于它本身的数, 例如 153就是一个水仙
花数 1*1*1+5*5*5+3*3*3=153
*/
import java.util.Scanner;
class HomeWork10 {
public static void main(String[] args) {
int num = 0;
int a = 0;
int b = 0;
int c = 0;
Scanner input = new Scanner(System.in);
System.out.println("请输入一个三位数:");
num = input.nextInt();
a = num % 10; //取个位
b = num / 10 % 10; //取十位
c = num / 100; //取百位
if (num == a * a * a + b * b * b + c * c * c) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
/*
输出结果:
D:\MyJavaCode\java day004 switch与while dowhile循环结构>java HomeWork10
请输入一个三位数:
153
YES
D:\MyJavaCode\java day004 switch与while dowhile循环结构>java HomeWork10
请输入一个三位数:
111
NO
*/