JAVA实验课 龟兔赛跑
设计2个线程, 一个表示乌龟, 一个表示兔子。
乌龟每秒跑一步, 步长为10以内的随机数;
兔子每5秒跑一步,步长为30以内的随机数;
假设整个赛道总长为100步长,看看谁先到达终点。
**刚开始我的思路是:**写三个分开的类:
代码:/**
*
*/
public class M {
public static void main(String[] args) {
new Thread(new Rabbit()).start();
new Thread(new Tortoise()).start();
//让本线程睡一下
try {
Thread.sleep(600);//休息时间
} catch (InterruptedException e) {
e.printStackTrace();
}
if(Rabbit.d>Tortoise.c){
System.out.println("乌龟胜利");
}
else{
System.out.println("兔子胜利");
}
}
}
mport java.util.Random;
public class Rabbit implements Runnable {
public static int d=0;
private volatile int total=0;//记录行驶的步长
@Override
public void run() {
for(int i=1;i=100){
System.out.println("兔子结束");
d=i;
break;
}
}
System.out.println("兔子使用的时间="+d);
}
}
import java.util.Random;
/**
* Aurora 2020年4月10日
*/
public class Tortoise implements Runnable {
public static int c=0;
private volatile int sum=0;//记录行驶的步长
@Override
public void run() {//重写的方法(重载)
for(int j=1;j=100){
System.out.println("乌龟结束");
c=j;
break;
}
}
System.out.println("乌龟使用的时间="+c);
}
}
**后来我又想到了内部类的概念,于是代码就成这样了:
**
import java.util.Random;
public class MAIN{
public static boolean f1=false;
public static boolean f2=false;
public static void main(String[] args) {
new Thread(new Rabbit()).start();
new Thread(new Tortoise()).start();
for(int q=0;qTortoise.c){
System.out.println("乌龟胜利");
}
else{
System.out.println("兔子胜利");
}
break;
}
}
}
public static class Rabbit implements Runnable {
public static int d=0;
private volatile int total=0;//记录行驶的步长
@Override
public void run() {
for(int i=1;i=100){
System.out.println("兔子结束");
d+=i;
break;
}
}
System.out.println("兔子使用的时间="+d);
f1=true;
}
}
public static class Tortoise implements Runnable {
public static int c=0;
private volatile int sum=0;//记录行驶的步长
@Override
public void run() {
for(int j=1;j=100){
System.out.println("乌龟结束");
c+=j;
break;
}
}
System.out.println("乌龟使用的时间="+c);
f2=true;
}
}
}