在Java中,计算自然数中的水仙花数(Narcissistic number,又称为阿姆斯特朗数或自恋数)可以通过遍历一个范围内的所有数,然后检查每个数的每个位上的数字的立方和是否等于该数本身来实现。
以下是一个简单的Java方法,用于找出并打印出1到999(包含)之间的所有水仙花数:
public class NarcissisticNumber {
public static void main(String[] args) {
for (int num = 1; num <= 999; num++) {
if (isNarcissistic(num)) {
System.out.println(num);
}
}
}
// 判断一个数是否是水仙花数
public static boolean isNarcissistic(int num) {
int originalNum = num;
int sum = 0;
while (num > 0) {
int digit = num % 10; // 取出最后一位数字
sum += digit * digit * digit; // 累加每个位上数字的立方
num /= 10; // 去掉最后一位数字
}
return sum == originalNum; // 如果立方和等于原数,则是水仙花数
}
}
这个Java程序首先定义了一个`NarcissisticNumber`类,其中包含了一个`main`方法用于执行程序的主要逻辑,以及一个`isNarcissistic`方法用于判断一个给定的数是否是水仙花数。在`main`方法中,通过一个for循环遍历1到999之间的所有数,并使用`isNarcissistic`方法检查每个数是否为水仙花数,如果是,则将其打印出来。
`isNarcissistic`方法通过计算给定数的每个位上数字的立方和,并与原数进行比较来判断该数是否为水仙花数。如果立方和等于原数,则返回`true`,否则返回`false`。