源码:
import java.util.Scanner;
public class shuixianhua {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int num = sc.nextInt();
//定义水仙花数各个位数与自身长度[ String.valueOf("int数字").length ]的次方的和
int sum;
//for循环输出比输入的数字【 num 】小的数字【 i 】
for (int i = 10; i <= num; i++) {
//初始化sum
sum = 0;
//定义一个int数字【 num1 】来替代【 num 】来计算水仙花数,因为需要用【 num 】确定【 i 】的数字
int num1 = i;
//定义一个int类型【 length 】得到【 num1 】的位数,也就是循环出来的比【 num 】小的数
int length = String.valueOf(num1).length();
//计算水仙花数的while循环,循环次数为【 length 】
while (num1 != 0) {
//先取个位数
int gewei = num1 % 10;
//再将个位数乘以数【 i 】位数的次方
sum = sum + (int)Math.pow(gewei, length);
//将个位数从【 num1 】中减去
num1 = num1 / 10;
//重新计算下一个个位
}
//判断是否是水仙花数
//不能用【 num1 】比较,因为【 num1 】已经为0了
if (sum == i) {
System.out.println(i+"是水仙花数");
}
//【 i 】是将要得到的水仙花数,【 num 】是确定【 i 】的范围 ,【 num1 】是用来计算水仙花数的,会改变
}
}
}
执行结果: