JAVA入门之龟兔鸡赛跑实例

场景如下。兔子、乌龟和公鸡进行赛跑,其中兔子每秒0.5米的速度,每跑2米休息10秒;乌龟每秒跑0.1米,不休息;公鸡每秒0.8米,每跑3秒需要吃一条虫子,耗时0.6秒。 当其中一个跑到终点后其他动物个不跑了;比赛道路长20米。试用多模拟该比赛过程

animal .java

package com.test44;

public class animal extends  Thread{
    protected double speed; //速度
    public static double length=20;               //道路总长
    private  String animalName;

    public double getSpeed() {
        return speed;
    }

    public void setSpeed(double speed) {
        this.speed = speed;
    }

    public static double getLength() {
        return length;
    }

    public static void setLength(double length) {
        animal.length = length;
    }

    public String getAnimalName() {
        return animalName;
    }

    public void setAnimalName(String animalName) {
        this.animalName = animalName;
    }

    public animal(String animalName) {
        super(animalName);


    }
}

Chick .java

package com.test44;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Chick extends animal {
    private Rabbit rabbit;
    private Wugui wugui;

    private  Integer time=0;//用来计时
    public Rabbit getRabbit() {
        return rabbit;
    }

    public void setRabbit(Rabbit rabbit) {
        this.rabbit = rabbit;
    }

    public Wugui getWugui() {
        return wugui;
    }

    public void setWugui(Wugui wugui) {
        this.wugui = wugui;
    }

    public Chick(String animalName,double speed) {
        super(animalName);
        this.speed=speed;
    }


    public void run() {
        for (double i = 0; i <this.length ; i+=speed) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

            System.out.println(this.getName()+"跑了"+(new BigDecimal(i+this.speed)).setScale(2, RoundingMode.HALF_UP)+"米");
            time++;//跑完一秒计时加一
            if(time%3==0&&time!=0){
                try {
                    System.out.println(this.getName()+"正在吃虫子,耗时0.6s");
                    Thread.sleep(600);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
        System.out.println(this.getName()+"是冠军");
        //率先跑完循环的就是冠军
        if(rabbit.isAlive()){
            rabbit.stop();;
        }
        if(wugui.isAlive()){
            wugui.stop();
        }
    }
}

Rabbit .java

package com.test44;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Rabbit extends animal {

    private Chick chick;
    private Wugui wugui;

    public Chick getChick() {
        return chick;
    }

    public void setChick(Chick chick) {
        this.chick = chick;
    }

    public Wugui getWugui() {
        return wugui;
    }

    public void setWugui(Wugui wugui) {
        this.wugui = wugui;
    }

    public Rabbit(String animalName,double speed) {
        super(animalName);
        this.speed=speed;

    }

    @Override
    public void run() {
        for (double i = 0; i <this.length ; i+=speed) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(this.getName()+"跑了"+(new BigDecimal(i+this.speed)).setScale(2, RoundingMode.HALF_UP)+"米");

            if(i!=0&&(i+this.speed)%2==0){
                try {
                    System.out.println(this.getName()+"正在睡觉,需要10s");
                    Thread.sleep(10000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
        System.out.println(this.getName()+"是冠军");
        //率先跑完循环的就是冠军
        if(chick.isAlive()){
            chick.stop();;
        }
        if(wugui.isAlive()){
            wugui.stop();
        }
    }
}

Wugui .java

package com.test44;

import java.math.BigDecimal;
import java.math.RoundingMode;

public class Wugui extends animal{
    private  Rabbit rabbit;
    private  Chick chick;

    public Wugui(String animalName,double speed) {
        super(animalName);
        this.speed=speed;
    }

    public Rabbit getRabbit() {
        return rabbit;
    }

    public void setRabbit(Rabbit rabbit) {
        this.rabbit = rabbit;
    }

    public Chick getChick() {
        return chick;
    }

    public void setChick(Chick chick) {
        this.chick = chick;
    }

    public void run() {
        for (double i = 0; i <this.length ; i+=speed) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(this.getName()+"跑了"+(new BigDecimal(i+this.speed)).setScale(2, RoundingMode.HALF_UP)+"米");

        }
        System.out.println(this.getName()+"是冠军");

        //率先跑完循环的就是冠军
        if(chick.isAlive()){
            chick.stop();;
        }
        if(rabbit.isAlive()){
            rabbit.stop();
        }
    }
}

Test .java

package com.test44;

public class Test {
    public static void main(String[] args) {
        Wugui wugui = new Wugui("乌龟", 0.1);
        Rabbit rabbit = new Rabbit("兔子", 0.5);
        Chick chick = new Chick("小鸡", 0.8);


        wugui.setChick(chick);
        wugui.setRabbit(rabbit);

        rabbit.setChick(chick);
        rabbit.setWugui(wugui);

        chick.setRabbit(rabbit);
        chick.setWugui(wugui);
        wugui.start();
        rabbit.start();
        chick.start();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值