如何在程序中设置跑到长度 选手数目以及各选手的名称 赛跑过程中,每跑完10米显示一次里程
```java
class Runner implements Runnable {
private String name;
private int speed;
private int distance;
public Runner(String name, int speed) {
this.name = name;
this.speed = speed;
this.distance = 0;
}
public void run() {
try {
while (distance < 100) {
Thread.sleep(100); // 模拟每次跑10米需要的时间
distance += 10;
if (distance % 10 == 0) {
System.out.println(name + "已经跑了" + distance + "米");
}
}
System.out.println(name + "到达终点!");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class Race {
public static void main(String[] args) {
String[] names = {"乌龟", "兔子", "猫", "狗"}; // 选手名称数组
int[] speeds = {1, 2, 3, 4}; // 选手速度数组
Thread[] threads = new Thread[names.length];
for (int i = 0; i < names.length; i++) {
String name = names[i];
int speed = speeds[i];
threads[i] = new Thread(new Runner(name, speed));
}
System.out.println("比赛开始!");
for (Thread thread : threads) {
thread.start(); // 启动线程,开始赛跑
}
try {
for (Thread thread : threads) {
thread.join(); // 等待所有线程执行完毕
}
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("比赛结束!");
}
}
在上述代码中,我们创建了一个Runner类来表示每个选手。每个选手具有名称、速度和当前距离属性。在run()方法中,选手会在每次睡眠100毫秒后增加10米的距离,并在跑完每10米后显示当前里程。
在Race类中,我们定义了选手数量、每个选手的名称和速度数组。我们使用这些信息创建了相应数量的Runner对象,并将它们封装在Thread对象中。然后,我们启动每个线程开始比赛。
最后,我们使用join()方法等待每个线程执行完毕,并输出比赛结果。
这是一个简单的龟兔赛跑多线程程序的示例,你可以根据自己的需求进行修改和扩展。
```
【以下回答由 GPT 生成】
这是一个典型的多线程应用场景,您可以通过以下步骤来实现:
public class Player implements Runnable {
private String name;
private int position;
public Player(String name) {
this.name = name;
this.position = 0;
}
public void updatePosition(int steps) {
this.position += steps;
}
public void displayMileage() {
System.out.println(name + "当前位置:" + position + "米");
}
@Override
public void run() {
// TODO: 实现选手的赛跑逻辑
}
}
run
方法中实现选手的赛跑逻辑。选手在每一步中随机跑出1到10的距离,并更新自己的位置。在每跑完10米后,调用displayMileage
方法显示里程。@Override
public void run() {
while (position < raceTrackLength) { // 如果还没到达终点
int steps = (int) (Math.random() * 10 + 1); // 随机跑出1到10的距离
updatePosition(steps); // 更新位置
if (position % 10 == 0) { // 如果跑完10米
displayMileage(); // 显示里程
}
try {
Thread.sleep(100); // 休眠100毫秒模拟跑步耗时
} catch (InterruptedException e) {
e.printStackTrace();
}
}
displayMileage(); // 跑到终点后再显示一次里程
}
public class Main {
public static void main(String[] args) {
int raceTrackLength = 100; // 设置赛道长度为100米
int numPlayers = 5; // 设置选手数量为5
// 创建并启动选手线程
for (int i = 1; i <= numPlayers; i++) {
Thread playerThread = new Thread(new Player("选手" + i, raceTrackLength));
playerThread.start();
}
}
}
以上就是通过多线程来模拟龟兔赛跑的解决方案,每个选手在比赛过程中每跑完10米就会显示一次里程。请注意,此处只给出了基本的代码结构,具体的逻辑实现部分需要您根据需求进行完善。
【相关推荐】