用java写出,2、通过实现Runnable接口方式模拟龟兔赛跑。 具体要求如下: 1、100米赛跑,兔子每秒跑2米,乌龟每秒跑1米。 2、兔子在跑过80米的时候,每跑2米休息2秒钟,乌龟每跑1米休息0.1秒。
时间: 2024-11-24 09:43:52 浏览: 25
在Java中,我们可以使用`Thread`类配合`Runnable`接口以及一些定时任务来模拟这个龟兔赛跑的情景。以下是一个简单的实现:
```java
import java.util.concurrent.TimeUnit;
class Rabbit implements Runnable {
private int distanceCovered = 0;
private int restInterval = 0;
@Override
public void run() {
int speed = 2; // 兔子速度为2米/秒
while (distanceCovered < 100) {
if (distanceCovered == 80 && restInterval > 0) { // 兔子每跑80米休息
try {
Thread.sleep(restInterval * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
restInterval = 0; // 初始时暂停时间为0
}
System.out.println("兔子跑了 " + distanceCovered + " 米");
distanceCovered += speed;
restInterval += 2; // 每跑2米休息2秒
}
System.out.println("比赛结束,兔子赢了!");
}
}
class Turtle extends Thread {
private int distanceCovered = 0;
private double restInterval = 0.1; // 乌龟每跑1米休息0.1秒
public Turtle() {
start(); // 乌龟开始比赛
}
@Override
public void run() {
int speed = 1; // 乌龟速度为1米/秒
while (distanceCovered < 100) {
System.out.println("乌龟跑了 " + distanceCovered + " 米");
distanceCovered += speed;
try {
Thread.sleep((long)(restInterval * 1000)); // 每跑1米休息0.1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("比赛结束,乌龟输了!");
}
}
public class Main {
public static void main(String[] args) {
Rabbit rabbit = new Rabbit();
new Turtle(); // 无需启动线程,Turtle会自行启动
}
}
```
在这个示例中,我们创建了两个类`Rabbit`和`Turtle`分别代表兔子和乌龟,它们都实现了`Runnable`接口并重写了`run()`方法。在`main`方法中,直接实例化`Rabbit`启动它的线程,而`Turtle`通过继承`Thread`并调用`start()`方法自动启动。
阅读全文