个人笔记
import java.util.Scanner;
public class Homework04 {
public static void main(String[] arge) {
//判断一个数是否为水仙花数,
//水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身,例如:153 = 1*1*1 + 5*5*5 +3*3*3
//思路:
//153 % 10 =3;15 % 10 = 5;1 % 10 = 1
//1.定义一个Scanner类型变量接收输入的数,用int变量存储这个输入的数和计算每个位上的数的立方和,
//用char存储这个数的每位上的数字
//2.使用while循环计算每个位上的数的立方值,和每位位数的立方值之和
//3.用if判断它的每个位上的数字的3次幂之和等于它本身
//4.判断用户输入的数是否为正整数
Scanner numScanner = new Scanner(System.in);
System.out.println("请输入一个正整数");
double number = numScanner.nextDouble();
int sum = 0;
double number01 = number;
while(number < 0 || number - (int)number != 0) {//判断输入的数是否为正整数
System.out.println("你输入的数有误,请输入一个正整数");
double number02 = numScanner.nextDouble();
number = number02;
}
while(number01 != 0) {
//整数取个位数直接 % 10,个位数%10等于该个位数:1 % 10 = 1;5 % 10=5
int num = (int)number01 % 10;//求个位上的数,153 % 10 =3;15 % 10 = 5;1 % 10 = 1
sum += num*num*num;//每位位数的立方值之和
number01 /= 10;//将整数除10缩小位数,将大于个位的位数变成个位,方便求每个位数上的数。153/10 = 15;15 / 10=1
}
// System.out.println(5 % 10);
if(number == sum) {
System.out.println((int)number + "是水仙花数");//这里强制转换int只是输出时好看
}
else {
System.out.println((int)number + "不是水仙花数");
}
}
}
以上内容仅供参考