qq_21733941 2016-06-11 07:25 采纳率: 62.5%
浏览 1277
已采纳

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

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

  • 写回答

10条回答 默认 最新

  • _1_1_7_ 2016-06-12 01:10
    关注

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

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • yzcn2013 2016-06-11 07:43
    关注
                                    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);
                                    }
    
    评论
  • qq_21733941 2016-06-11 07:53
    关注

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

    评论
  • qq_21733941 2016-06-11 07:56
    关注

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

    评论
  • 不识君的荒漠 2016-06-11 08:15
    关注

    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;
    

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

    评论
  • lijie_0825 2016-06-11 08:38
    关注

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

     <!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>
    
    评论
  • _1_1_7_ 2016-06-12 01:47
    关注

    刚才时间写错了,应该是:
    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);
    }
    

    }

    评论
  • 萧逸才 2016-06-12 05:17
    关注
     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();
        }
    
    }
    
    
    评论
  • 「已注销」 2016-06-13 10:32
    关注
     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;}   
            }
        }
    
    }
    
    
    评论
  • music_xiaobao 2016-06-15 07:14
    关注

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

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

    }

    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥15 微信实时共享位置修改
  • ¥100 TG的session协议号转成直登号号后客户端登录几分钟后自动退出设备
  • ¥30 共模反馈回路的小信号增益
  • ¥15 arduino ssd1306函数与tone函数放歌代码不兼容问题
  • ¥70 0.96版本hbase的row_key里含有双引号,无法deleteall
  • ¥20 Ida Pro增加插件出现问题
  • ¥15 诊断性META分析合并效能的检验
  • ¥15 请问abb根据色块判断奇偶数并根据批次号放入仓储
  • ¥66 开发PC客户端一定也要开发上位机吗?
  • ¥20 Java eclipse连接数据库