JAVA龟兔赛跑问题

JAVA龟兔赛跑问题,第1张

先让兔子进入阻塞状态,然后等乌龟跑完终点后唤醒兔子线程就行;下面是各个方法的配套使用(网上copy的,总结的很不错)1 sleep() 方法:sleep() 允许 指定以毫秒为单位的一段时间作为参数,它使得线程在指定的时间

内进入阻塞状态,不能得到CPU 时间,指定的时间一过,线程重新进入可执行状态。

典型地,sleep() 被用在等待某个资源就绪的情形:测试发现条件不满足后,让线程阻塞一段时间后

重新测试,直到条件满足为止。

2 suspend() 和 resume() 方法:两个方法配套使用,suspend()使得线程进入阻塞状态,并且不会

自动恢复,必须其对应的resume() 被调用,才能使得线程重新进入可执行状态。典型地,suspend() 和

resume() 被用在等待另一个线程产生的结果的情形:测试发现结果还没有产生后,让线程阻塞,另一个

线程产生了结果后,调用 resume() 使其恢复。

3 yield() 方法:yield() 使得线程放弃当前分得的 CPU 时间,但是不使线程阻塞,即线程仍处于

可执行状态,随时可能再次分得 CPU 时间。调用 yield() 的效果等价于调度程序认为该线程已执行了足

够的时间从而转到另一个线程。

4 wait() 和 notify() 方法:两个方法配套使用,wait() 使得线程进入阻塞状态,它有两种形式

,一种允许指定以毫秒为单位的一段时间作为参数,另一种没有参数,前者当对应的 notify() 被调用或

者超出指定时间时线程重新进入可执行状态,后者则必须对应的 notify() 被调用。

详情请见>

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(Systemin);

           

         v1=scannernextInt();    

          v2=scannernextInt();

         t=scannernextInt();

         s=scannernextInt();

         l=scannernextInt();

          

         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;//乌龟每次都会跑

              

              

             Systemoutprint("兔子跑了:"+sum1+"米");

             Systemoutprintln("乌龟跑了:"+sum2+"米");

        }

         if(sum1==sum2)

             Systemoutprintln("D"+i);

         else if(sum1>=l)

             Systemoutprintln("R"+i);

         else if(sum2>=l)

             Systemoutprintln("T"+i);

}

}

用JAVA编写一个龟兔赛跑的GUI界面小游戏,其功能说明如下:

当程序启动后,主窗体上有两个,一幅乌龟,一幅是兔子,并列放置在窗体的左边,主窗体下面有两个按钮,一个是跑,一个是退出

当点击跑按钮时,就开始往右边移动,谁先移动到右边,就是胜利者,在窗体的标题栏上提示是谁赢。

当点击退出按钮时,退出当前程序

程序如下:

/

GuiTuSaiPaojava

@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){

thisname=name;

}

public void run(){

while(true){

//每次停500毫秒

try {

Threadsleep(500);

} catch (InterruptedException e) {

eprintStackTrace();

}

//向前跑十米

length+=10;

Systemoutprintln(name+"已跑了"+length+"米");

//到达终点

if(length>=100){

Systemoutprintln(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);

//启动线程

threadstart();

thread2start();

}

}

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

乌龟已跑了10米

兔子已跑了10米

兔子已跑了20米

乌龟已跑了20米

乌龟已跑了30米

兔子已跑了30米

兔子已跑了40米

乌龟已跑了40米

兔子已跑了50米

乌龟已跑了50米

乌龟已跑了60米

兔子已跑了60米

乌龟已跑了70米

兔子已跑了70米

乌龟已跑了80米

兔子已跑了80米

兔子已跑了90米

乌龟已跑了90米

兔子已跑了100米

兔子,已经到达终点!

乌龟已跑了100米

乌龟,已经到达终点!

完全看rp,这就是线程!

给分吧,哈哈

以上就是关于JAVA龟兔赛跑问题全部的内容,包括:JAVA龟兔赛跑问题、龟兔赛跑故事教案七大步骤、java算法题——龟兔赛跑等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9316241.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存