「java龟兔」java龟兔赛跑多线程

博主:adminadmin 2022-11-24 04:16:06 51

本篇文章给大家谈谈java龟兔,以及java龟兔赛跑多线程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java的龟兔赛跑多线程问题

public class Competition {

private volatile static boolean gameOver = false;//用来标记是否有人到达终点,到达终点后游戏结束

//乌龟的实现方式

static class Tortoise implements Runnable{

private volatile int total = 0;//用来记录当前已经前行了多少距离

@Override

public void run() {

while(!gameOver){

int step = (int)(Math.random()*5+1);//产生1-5的随机数

total += step;

try {

Thread.sleep(200);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

public int getTotal(){

return total;

}

}

//兔子的实现方式

static class Rabbit implements Runnable{

private volatile int total = 0;

@Override

public void run() {

while(!gameOver){

int step = (int)(Math.random()*5+1);

total += step;

try {

Thread.sleep(200);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

public int getTotal(){

return total;

}

}

/**

 * @param args

 */

public static void main(String[] args) {

// TODO Auto-generated method stub

final Tortoise tortoise = new Tortoise();

final Rabbit rabbit = new Rabbit();

new Thread(tortoise).start();

new Thread(rabbit).start();

//下面多起了一个线程,相当于比赛的时候的裁判员,他每隔一段时间就看一下是否有人到达终点,若有人到达则宣判该人获胜,游戏结束

new Thread(new Runnable(){

@Override

public void run() {

// TODO Auto-generated method stub

while(!gameOver){

int torLen = tortoise.getTotal();//获得乌龟前行的距离

int rabLen = rabbit.getTotal();//获得兔子前行的距离

System.out.println("乌龟:"+torLen+",兔子"+rabLen);

if(torLen = 100  rabLen 100){

System.out.println("乌龟获胜!!!");

gameOver = true;

}else if(rabLen = 100  torLen 100){

System.out.println("兔子获胜!!!");

gameOver = true;

}else if(rabLen =100  torLen = 100){//这里有可能两人同时到达终点

System.out.println("同时到达终点!!!");

gameOver = true;

}

try {

Thread.sleep(210);

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}).start();

}

java算法题——龟兔赛跑

public class Test1{

public static void main(String[] args) throws InterruptedException {

   int v1=25,v2=10,t=20,s=3,l=100;

          

          

         Scanner scanner=new Scanner(System.in);

           

         v1=scanner.nextInt();    

          v2=scanner.nextInt();

         t=scanner.nextInt();

         s=scanner.nextInt();

         l=scanner.nextInt();

          

         int sum1=0,sum2=0;

         boolean stop=false;

         int stopcount=0;

         int i=0;

         for ( i = 0; i  l/v2; i++) {

             

          

          if(sum1=l||sum2=l)//如果有一个跑到了终点就结束了

          break;

          

             if(stopcount==s)

                 stop=false; //如果休息的时间够了,就开始跑

              

              

             if(sum1-sum2=t)

                 stop=true; //如果超过了t米,就休息

              

              

             if(!stop)

                sum1+=v1; //当兔子不休息的时候跑

             else

                 stopcount++; //休息的时间计数

              

             sum2+=v2;//乌龟每次都会跑

              

              

             System.out.print("兔子跑了:"+sum1+"米");

             System.out.println("乌龟跑了:"+sum2+"米");

        }

         if(sum1==sum2)

             System.out.println("D"+i);

         else if(sum1=l)

             System.out.println("R"+i);

         else if(sum2=l)

             System.out.println("T"+i);

}

}

java中龟兔赛跑问题结果为什么出现小数点后好多位?

这是浮点数运算误差造成的,在所有计算机程序设计语言中都会出现的,不可避免,具体原因这里三言两语说不清,自己百度。解决办法就是尽量改用整数运算,比如0.1米可以改为1分米,然后用整型变量来储存和运算,最后输出的时候如果要用米为单位,再把结果除以10即可。

用JAVA多线程实现龟兔赛跑

程序如下:

/**

*

* GuiTuSaiPao.java

* @author Antonio

* 2009年9月2日20:16:33

* 实现Runnable接口中的run方法

*

*/

public class GuiTuSaiPao implements Runnable {

private String name;

private int length=0;

public GuiTuSaiPao(){}

public GuiTuSaiPao(String name){

this.name=name;

}

public void run(){

while(true){

//每次停500毫秒

try {

Thread.sleep(500);

} catch (InterruptedException e) {

e.printStackTrace();

}

//向前跑十米

length+=10;

System.out.println(name+"已跑了"+length+"米.");

//到达终点

if(length=100){

System.out.println(name+",已经到达终点!");

//结束赛跑,break

break;

}

}

}

public static void main(String[] args) {

GuiTuSaiPao wugui=new GuiTuSaiPao("乌龟");

GuiTuSaiPao tuzi=new GuiTuSaiPao("兔子");

Thread thread=new Thread(wugui);

Thread thread2=new Thread(tuzi);

//启动线程

thread.start();

thread2.start();

}

}

输出结果:(不一定每次都一样!)

乌龟已跑了10米.

兔子已跑了10米.

兔子已跑了20米.

乌龟已跑了20米.

乌龟已跑了30米.

兔子已跑了30米.

兔子已跑了40米.

乌龟已跑了40米.

兔子已跑了50米.

乌龟已跑了50米.

乌龟已跑了60米.

兔子已跑了60米.

乌龟已跑了70米.

兔子已跑了70米.

乌龟已跑了80米.

兔子已跑了80米.

兔子已跑了90米.

乌龟已跑了90米.

兔子已跑了100米.

兔子,已经到达终点!

乌龟已跑了100米.

乌龟,已经到达终点!

完全看rp,这就是线程!

给分吧,哈哈

关于java龟兔和java龟兔赛跑多线程的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-24,除非注明,否则均为首码项目网原创文章,转载请注明出处。