创建两个线程,其中一个线程向文件thread1.txt输出所有的水仙花数,另外一个线程向文件leapYear.txt输出1900年到2021年的所有闰年。请输出尽可能完整的java程序
时间: 2024-03-10 13:48:49 浏览: 65
C语言小程序 如何判断两个日期之差
下面是一个可能的Java程序实现:
```java
import java.io.FileWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
Thread t1 = new Thread(new NarcissisticNumberPrinter());
Thread t2 = new Thread(new LeapYearPrinter());
t1.start();
t2.start();
}
private static class NarcissisticNumberPrinter implements Runnable {
@Override
public void run() {
try {
FileWriter fw = new FileWriter("thread1.txt");
for (int i = 100; i < 1000; i++) {
int digit1 = i / 100;
int digit2 = (i / 10) % 10;
int digit3 = i % 10;
if (i == digit1 * digit1 * digit1 + digit2 * digit2 * digit2 + digit3 * digit3 * digit3) {
fw.write(i + "\n");
}
}
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static class LeapYearPrinter implements Runnable {
@Override
public void run() {
try {
FileWriter fw = new FileWriter("leapYear.txt");
for (int i = 1900; i <= 2021; i++) {
if (i % 4 == 0 && (i % 100 != 0 || i % 400 == 0)) {
fw.write(i + "\n");
}
}
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
这个程序创建了两个线程,一个用于输出所有的水仙花数,另一个用于输出1900年到2021年的所有闰年。每个线程实现了`Runnable`接口并覆盖了`run()`方法,在`run()`方法中实现了相应的逻辑。文件输出使用了Java的文件写入API,将结果写入指定文件中。在`main()`方法中,启动了这两个线程,让它们并发地执行。
阅读全文