java龟兔赛跑预测(龟兔赛跑早有预测)

今天给各位分享java龟兔赛跑预测的知识,其中也会对龟兔赛跑早有预测进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、java模拟龟兔赛跑问题用多线程实现2、java解决龟兔赛跑问题,新手急求大神,最好不要用多线程,注释尽量详细点。麻烦了!!3、JAVA龟兔赛跑问题4、java算法题——龟兔赛跑5、Java的龟兔赛跑多线程问题

java模拟龟兔赛跑问题用多线程实现

import java.util.Date;

public class Test extends Thread{ private int tortoise_walk = 0; // 乌龟已跑长度存放变量

private int rabbit_walk = 0; // 兔子已跑长度存放变量

private int finish = 1000; // 终点

private volatile boolean hasWinner = false;// 胜利者诞生 /**

*

* @ClassName: Tortoise_Run

* @Description: TODO(乌龟奔跑线程)

* @author guotingchao

* @date 2012-3-6 上午10:20:45

*

*/

class Tortoise_Run implements Runnable {

@Override

public void run() {

try {

while (!hasWinner) {

if (tortoise_walk % 100 == 0 (tortoise_walk != 0||tortoise_walk=finish)) { //乌龟每100米休息500毫秒

System.out.println(“乌龟休息中………………”);

Thread.sleep(500);

}

tortoise_walk++;

System.out.println(“乌龟已跑”+tortoise_walk+”米”);

}

} catch (InterruptedException e) {

e.printStackTrace();

}

}

} /**

*

* @ClassName: Rabbit_Run

* @Description: TODO(兔子奔跑线程)

* @date 2012-3-6 上午10:25:10

* @author guotingchao

*/

class Rabbit_Run implements Runnable {

@Override

public void run() {

try {

while (!hasWinner) {

if (rabbit_walk % 20 == 0 (rabbit_walk != 0||rabbit_walk=finish)) { //兔子每20米休息500毫秒

System.out.println(“兔子休息中………………”);

Thread.sleep(500);

}

rabbit_walk=rabbit_walk+5; //每秒跑5步

System.out.println(“兔子已跑”+rabbit_walk+”米”);

}

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

@Override

public void run(){

new Thread(new Rabbit_Run()).start();

new Thread(new Tortoise_Run()).start();

}

/**

* @Title: main

* @Description: TODO(

* 赛程1000米,兔子跑5米,乌龟跑1米,兔子每20米休息500毫秒,乌龟每100米休息500毫秒。谁先到终点就结束程序

* ,并显示获胜方。)

* @param @param args

* @param @throws Exception 设定文件

* @author guotingchao

* @return void 返回类型

* @throws

*/

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

long temp_actionTime=System.currentTimeMillis();

System.out.println(“比赛开始:”+new Date(temp_actionTime)+”毫秒”);

Test t=new Test();

new Thread(t).start();

while(true){

if(t.tortoise_walk=t.finish||t.rabbit_walk=t.finish){

t.hasWinner=true;

break;

}

}

String winnnerName=t.tortoise_walkt.rabbit_walk?”乌龟”:”兔子”;

long temp_lastTime=System.currentTimeMillis();

System.out.println(winnnerName+”胜利”);

System.out.println(“比赛结束:”+new Date(temp_lastTime)+”毫秒”);

System.out.println(“所耗时间:”+(temp_lastTime-temp_actionTime)+”毫秒”);

System.out.println(“兔子=”+t.rabbit_walk+” 乌龟=”+t.tortoise_walk);

}

}

//不知道兔子和乌龟的步长时间是否按每秒。 这里程序只考虑依次递增频率

java解决龟兔赛跑问题,新手急求大神,最好不要用多线程,注释尽量详细点。麻烦了!!

这本来也不需要多线程啊,练习的目的就是改进思想,呵呵。加油

java龟兔赛跑预测(龟兔赛跑早有预测)

JAVA龟兔赛跑问题

先让兔子进入阻塞状态,然后等乌龟跑完终点后唤醒兔子线程就行;下面是各个方法的配套使用(网上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() 被调用。

详情请见

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的龟兔赛跑多线程问题

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龟兔赛跑预测和龟兔赛跑早有预测的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年4月3日 20:59:08
下一篇 2024年4月3日 21:06:17

相关推荐

  • 深入java虚拟机pdf,深入java虚拟机 中村成洋 pdf

    在linux环境下,java怎么实现从word格式转换为pdf格式 //设置当前使用的打印机,我的Adobe Distiller打印机名字为 Adobe PDF wordCom.setProperty( ActivePrinter , new Variant( Adobe PDF ));//设置printout的参数,将word文档打印为postscript…

    2024年5月23日
    4400
  • java截取指定长度字符串,java截取指定字符串之后的

    java中如何截取字符串中的指定一部分 第一个参数是开始截取的字符位置。(从0开始)第二个参数是结束字符的位置+1。(从0开始)indexof函数的作用是查找该字符串中的某个字的位置,并且返回。 int end);截取s中从begin开始至end结束时的字符串,并将其赋值给s;split讲解:java.lang.string.split split 方法 将…

    2024年5月23日
    4200
  • java绑定一个端口,java使用端口

    java如何多个service共用一个端口 你如果有多个项目的话,你可以把多个项目放到一个tomcat里面,这样端口相同使用项目名称来进行区分项目。你如果非要使用同一个,你也可以配置不同的域名导向不同的项目。就是访问的域名不同转接到的项目不同。 如果需要同时启动多个程序,要么修改tomcat的配置文件中的监听端口。要么修改jar包程序的监听端口。不能在一台服…

    2024年5月23日
    3500
  • java多线程并发编程基础,Java多线程并发执行返回

    电脑培训分享Java并发编程:核心理论 电脑培训发现本系列会从线程间协调的方式(wait、notify、notifyAll)、Synchronized及Volatile的本质入手,详细解释JDK为我们提供的每种并发工具和底层实现机制。 人们开始意识到了继承的众多缺点,开始努力用聚合代替继承。软件工程解决扩展性的重要原则就是抽象描述,直接使用的工具就是接口。接…

    2024年5月23日
    4700
  • 自学java找工作,自学java找工作需要包装简历吗

    自学java学多久可以找到工作 1、自学Java至少需要一年以上的时间才能达到找工作的水平。报班培训四到六个月的时间就可以找到一份不错的工作。 2、自学Java至少需要一年以上的时间才能达到找工作的水平。 3、如果要想找到一份Java相关的工作,需要至少学习5-6个月时间才能就业。Java开发需要掌握一些基础的编程语言知识,比如掌握面向对象的编程思想、基本的…

    2024年5月23日
    4300
  • java左移右移,java 左移

    java位移问题 1、思路:直接用Integer类的bit运算操作。 2、移位操作:左移:向左移位,符号后面的数字是移了多少位,移的位用0补齐,例如2进制数01111111左移一位后变为11111110,移位是字节操作。 3、Java 位运算 Java 位运算[转]一,Java 位运算表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的…

    2024年5月23日
    4200
  • java技术规范,java规范性要求

    现在主流的JAVA技术是什么? java最流行开发技术程序员必看 1 、Git Git一直是世界上最受欢迎的Java工具之一,也是Java开发人员最杰出的工具之一。Git是一个开源工具,是-种出色的分布式版本控制解决方案。 (1).Java基础语法、数组、类与对象、继承与多态、异常、范型、集合、流与文件、反射、枚举、自动装箱和注解。(2).Java面向对象编…

    2024年5月23日
    4000
  • javasocket编程,Java socket编程中,禁用nagle算法的参数

    Java进行并发多连接socket编程 1、Java可利用ServerSocket类对外部客户端提供多个socket接口。基本的做法是先创建一个ServerSocket实例,并绑定一个指定的端口,然后在这个实例上调用accept()方法等待客户端的连接请求。 2、Socket socket=server.accept(0;Thread handleThrea…

    2024年5月23日
    4600
  • java死亡,java死代码是什么意思

    我的世界传送回死亡点指令是什么? 1、下面就让我们一起来了解一下吧:我的世界回到死的地方的指令是输入/back,就可以回到死亡地点了,当然也可以看信标,因为死亡后会有一道光集中在死亡点,只要循着光就可以找到目的地了。 2、在服务器中的指令 首先打开指令台,在指令行输入“/back”就可以回到自己的死亡地点了。在单人游戏中的指令 在单人游戏中,您无法直接返回到…

    2024年5月23日
    4800
  • myeclipse能部署java工程么,myeclipse支持jdk18

    myeclipse如何建java文件 1、点击【File】—【New】–【Class】在如下界面,输入Class的名字,如Test,点击【Finish】。Test.java文件创建成功。 2、点击【File】—【New】–【Class】 在如下界面,输入Class的名字,如Test,点击【Finish】。 Te…

    2024年5月23日
    3900

发表回复

登录后才能评论



关注微信