java简单算法题,大神帮忙看下哈

1 用代码实现以下程序:篮子里有18个包子,每60s取出三个包子,同时每40s放入1个包子,不断地重复上动作,当包子不足两个时,程序结束。

import java.util.Timer;
import java.util.TimerTask;

public class BaoZi {

public static void main(String[] args) {
    final Timer timer = new Timer();
    TimerTask task = new TimerTask() {

        int count = 0;

        int baozi = 18;

        @Override
        public void run() {
            count++;
            if (count % 4 == 0) {
                baozi++;
                System.out.println("放入1个包子,现总数:" + baozi);
            }
            if (count % 6 == 0) {
                baozi -= 3;
                System.out.println("取出三个包子,现总数:" + baozi);
            }
            if (baozi < 2) {
                System.out.println("包子总数:" + baozi + " 不足两个,程序结束");
                timer.cancel();
            }
        }
    };
    timer.scheduleAtFixedRate(task, 0, 20000);
}

}

                                int num=18;
                                for(int i=0; i<2*60*60; i++){
                                    if(i%40==0){
                                        num+=1;
                                    }
                                        if(i%60==0){
                                        num-=3;
                                    }

                                }
                                    if(num<0){
                                        system.out.println("num=0");
                                    }
                                    else{
                                system.out.println("num="+num);
                                }

我想做出的效果是:
定时60s自动执行取出3个包子,40s放入一个,当不足两个时执行结束

我想做出的效果是:
定时60s自动执行取出3个包子,40s放入一个,篮子里包子不足2个时执行结束

int CountTime(int num)
{

int t = 0;
while (num >= 2)
{
    t++;
    if (t % 4 == 0) num++;
    if (t % 6 == 0) num -= 3;
}
return t * 10;

}
程序结束时,总共用了多少时间

我是用的数组元素类比编写的,希望可以帮到你!

 <!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>一个js算法的简单实现</title>
    </head>

    <body>

        <script type="text/javascript">
            var arr = new Array();
            for (var i = 0; i < 18; i++) {
                arr[i] = 1;
            }
            arr[arr.length - 3] = 3;
            document.write(arr + "<br>");
            document.write(arr.length + "<br>");
            document.write(arr[arr.length - 3] + "<br>");
            //setTimeOut()方法用于在指定的毫秒数后调用函数或计算表达式
            //setInterval()方法用于每隔指定的毫秒数循环调用函数或者表达式
            var num;
            num=arr.length;
            //每隔40秒加入一个包子
            var put = setInterval(function () {
            if (num>=2) {
                //数组元素的添加
                arr.push(1);
                num=arr.length;
                document.write(arr + "<br>");
            } else {
                document.write("程序结束!");
                clearInterval(put);
                }
            }, 40000);
            //每隔60秒去除三个元素
            var get = setInterval(function () {
            if (num>=2) {
                //数组元素的删除
                arr.splice(arr.length - 3, 3);
                num=arr.length;
                document.write(arr + "<br>");
            } else {
                document.write("程序结束!");
                clearInterval(get);
                }
            }, 60000);



        </script>
    </body>

</html>

刚才时间写错了,应该是:
import java.util.Timer;
import java.util.TimerTask;

public class BaoZi {

public static void main(String[] args) {
    final Timer timer = new Timer();
    TimerTask task = new TimerTask() {

        int count = 0;

        int baozi = 18;

        @Override
        public void run() {
            count++;
            if (count % 2 == 0) {
                baozi++;
                System.out.println("放入1个包子,现总数:" + baozi);
            }
            if (count % 3 == 0) {
                baozi -= 3;
                System.out.println("取出三个包子,现总数:" + baozi);
            }
            if (baozi < 2) {
                System.out.println("包子总数:" + baozi + " 不足两个,程序结束");
                timer.cancel();
            }
        }
    };
    timer.scheduleAtFixedRate(task, 0, 20000);
}

}

 import java.util.Timer;
import java.util.TimerTask;

public class Main {

    Timer timer;
    public Main() {
        timer = new Timer();
        timer.schedule(new RemindTask(), 0*1000,2*1000);
    }
    class RemindTask extends TimerTask{
        private int flag = -1;
        private int bunNum = 18;    //包子数量
        public void run(){
            flag++;

            if (bunNum < 2){
                System.out.println("程序结束");
                timer.cancel(); //程序结束
            }

            if (flag == 2) { //每40s放入1个包子
                bunNum = bunNum + 1;
            }else if ((flag == 3)){//每60s取出三个包子
                bunNum = bunNum - 3;
            }
            System.out.println("当前时间已过:["+flag*2+"]秒,包子数量:["+bunNum+"]个");
            flag = flag % 3;
        }
    }
    public static void main(String args[]) {
        System.out.println("程序开始");
        new Main();
    }

}

 package demo;

public class Demo2 {
    public static void main(String args[]){
        int num = 18;
        int add = 0,cut = 0;
        while(num>=2){
            try {
                Thread.sleep(10); //睡眠1s
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            add++;
            cut++;
            if(add==40) {num++; System.out.println("添加1个包子,剩余"+num+"个包子"); add=0;}
            if(cut==60) {num-=3; System.out.println("拿去3个包子,剩余"+num+"个包子"); cut=0;}   
        }
    }

}

int num = 18;
int time = 0;
while(num > 2) {
sleep(1);
time ++;

    if (time % 40 == 0) {
        num++;
    }
    if (time % 60 ==0) {
       num -= 3;
    }

}