编写一个程序,判断某个数是否为水仙花数,要求用户输入一个数程序,输出这个数是否为水仙花数,水仙花数是指一个三位数,其各个位数的三次方和等于该数本身例输入153输出数字153是一个水仙花数,永利输入181输出数字181不是一个水仙花数
时间: 2025-04-02 22:05:45 浏览: 20
<<
要编写一个程序判断某个数是否为水仙花数,首先我们需要了解水仙花数的定义:对于一个三位整数来说,如果它的各位数字立方和等于它自身,则称其为“水仙花数”。以下是一个完整的 Java 实现:
```java
import java.util.Scanner;
public class NarcissisticNumber {
public static void main(String[] args) {
// 创建 Scanner 对象用于接收用户输入
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个三位正整数: ");
int number = scanner.nextInt();
// 判断输入是否合法(必须是三位数)
if (number < 100 || number > 999) {
System.out.println("您输入的不是三位数!");
return;
}
// 分解出个、十、百位上的数字
int hundredsDigit = number / 100; // 百位
int tensDigit = (number % 100) / 10; // 十位
int unitsDigit = number % 10; // 个位
// 计算各位置上数字的三次幂之和
int sumOfCubes = Math.pow(hundredsDigit, 3)
+ Math.pow(tensDigit, 3)
+ Math.pow(unitsDigit, 3);
// 输出结果
if (sumOfCubes == number) {
System.out.println("数字 " + number + " 是一个水仙花数");
} else {
System.out.println("数字 " + number + " 不是一个水仙花数");
}
// 关闭扫描器
scanner.close();
}
}
```
### 解释
1. **输入验证**:我们先确保用户输入的是一个有效的三位数。如果不是三位数则直接提示错误信息并退出。
2. **分解数字**:使用数学运算将输入的数字按百位、十位和个位进行分离。
- `hundredsDigit` 表示百位数值。
- `tensDigit` 表示十位数值。
- `unitsDigit` 表示个位数值。
3. **计算与比较**:对每个数字分别求三次方,并累加得到它们的总和。然后检查此总和是否等于原输入值。
4. **输出结果**:根据上述条件决定打印哪种消息。
阅读全文
相关推荐

















