java乌龟代码 乌龟的代码

JAVA的程序设计,设计一个龟兔赛跑的线程类模拟参与赛跑。

感觉挺有趣的,试着写了个~

江源网站建设公司创新互联公司,江源网站设计制作,有大型网站制作公司丰富经验。已为江源1000多家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的江源做网站的公司定做!

public static void main(String[] arg) {

new wugui().run();

new tuzi().run();

}

static class wugui {

final int sudu = 4;// 乌龟的速度是每秒4米

public static boolean hasEnd = false;// 是否已经跑到终点

public void run() {

new Thread() {

public void run() {

int distance = 0;

while (distance 100) {

try {

Thread.sleep(1000);

distance += sudu;

System.out.println("小乌龟跑了" + distance + "米");

} catch (InterruptedException e) {

e.printStackTrace();

}

}

hasEnd = true;

if (tuzi.hasEnd) {

System.out.println("呜呜,差一点点就赢了~");

} else {

System.out.println("胜利是属于有准备的人的,你的自大害了你!-------乌龟赢了");

}

}

}.start();

}

}

static class tuzi {

final int sudu = 5;// 兔子的速度是每秒5米

public static boolean hasEnd = false;// 是否已经跑到终点

public void run() {

new Thread() {

@Override

public void run() {

int distance = 0;// 跑了多少米

boolean hasXiuXi = false;// 是否休息过

while (distance 100) {

try {

Thread.sleep(1000);

distance += sudu;

System.out.println("小兔子跑了" + distance + "米");

if (distance 50 !hasXiuXi) {

System.out.println("小兔子累了,决定休息一会儿~");

Thread.sleep((long) (10000 * Math.random()));

System.out.println("小兔子休息够了,又开始跑了,决一胜负吧!");

hasXiuXi = true;

}

} catch (InterruptedException e) {

e.printStackTrace();

}

}

hasEnd = true;

if (wugui.hasEnd) {

System.out.println("呜呜,早知道就不休息了~");

} else {

System.out.println("哇哈哈,你个战5渣也想赢我~~做梦去吧!!-------兔子赢了");

}

}

}.start();

}

}

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模拟龟兔赛跑问题用多线程实现

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

}

}

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

已知龟兔起点相差1000米,乌龟速度10,兔子速度20,求多久能相遇,用JAVA代码怎么写?

LZ题目给的不是很准确。。跑道是否为环形跑道?

要用JAVA 写出来,首先就要去分析这道数学题中的逻辑问题

1:若为直线跑道,要有相遇 必然是乌龟在前,兔子在后。。定义为追击问题。。

求出速度差 v = 20 -10 = 10

追击路程为 s = 1000

可以得出相遇时间,也就是兔子追上乌龟的时间为 t = 1000/10 = 100(单位题目没有给出。分析应该是min 分钟)

2:若为环形跑道

一圈是多少米,题目没有给出。。故无法算出

分析完数学逻辑,再来写程序代码

public class Test9 {

public static void main(String[] args) {

//定义乌龟速度

int v1 = 10;

//定义兔子速度

int v2 = 20;

//定义整个路程

int sum = 1000;

//求出时间

double t = sum/(v2-v1);

System.out.println(t);

}

}

java基础代码,求问那句maria.doSth(jose)的影响,两个乌龟分别怎么动(蓝色是jo

jose 不动 ,maria forward(40) turn(-90)

这是java 中的方法传参问题 ,在java中参数类型是引用类型,传的是这个引用参数的引用的副本,在dosth()中,这个引用turtle指向了maria的地址,改变的都是maria值


网页标题:java乌龟代码 乌龟的代码
网页URL:http://myzitong.com/article/hhsphs.html