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