用Java编写程序,条件:"水仙花数"。所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。例如,153就是一水仙花数,因为153 = 13+53+33 。 请计算出所有的水仙花数,并以一行一个水仙花数的格式保存到文本文件data.txt中。输出格式如下: 153 = 1*1*1 + 5*5*5 + 3*3*3
时间: 2024-02-13 07:05:05 浏览: 111
输出所有的水仙花数,所谓水仙花数是指一个3位数,其各个位上数字立方和等于其本身。
下面是一个参考的代码实现:
```java
import java.io.FileWriter;
import java.io.IOException;
public class NarcissisticNumber {
public static void main(String[] args) {
try {
FileWriter writer = new FileWriter("data.txt"); // 创建输出流,写入到 data.txt 文件中
for (int i = 100; i < 1000; i++) { // 枚举所有的3位数
int a = i / 100; // 分解出百位
int b = (i % 100) / 10; // 分解出十位
int c = i % 10; // 分解出个位
if (a * a * a + b * b * b + c * c * c == i) { // 判断是否为水仙花数
String str = String.format("%d = %d*%d*%d + %d*%d*%d + %d*%d*%d\n", i, a, a, a, b, b, b, c, c, c);
writer.write(str); // 将结果写入文件
}
}
writer.close(); // 关闭输出流
System.out.println("水仙花数计算完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
该程序中,首先通过FileWriter类创建输出流,将结果写入到data.txt文件中。然后使用for循环枚举所有的3位数,分解出百位、十位和个位,并判断是否为水仙花数。如果是,则将该数和各位数字立方后的值输出到文件中。最后关闭输出流,程序结束。
阅读全文