package yun3;

 import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Calendar;
import java.util.Scanner;
public class number3 { /**
* * 作者:范铭祥
* 功能:演示先来先到处理算法
* 日志2:事实证明日志1的方法可用,但在系统运行过程中因为一些逻辑性问题而出错,我将画一张新逻辑图
* 来解决这问题,现创建新程序解决,并缩略程序
*/
public static void main(String[] args) throws Exception
{
System.out.println("是否要自定作业个数?Y/N");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String choose=br.readLine();
JCB[] project=new JCB[25];
int aa=1;
if(choose.equals("Y"))
{
Scanner in=new Scanner(System.in);
System.out.println("请输入作业的个数");
aa=in.nextInt()+1;//这里aa预留大了1,后面只需用<符号
}
if(choose.equals("N"))
{
aa=6;
}
//录入各项目的JBC数据
System.out.println("以下是输入作业信息:\n");
Scanner in=new Scanner(System.in);
for(int i=1;i<aa;i++)
{ project[i]=new JCB();
project[i].vv=i;
System.out.println("请输入第"+i+"个作业的名字 ");
project[i].name=br.readLine();
project[i].inmessage("作业等待");
System.out.println("输入第"+i+"个作业所需的运行时间(秒)!");
int run=in.nextInt();
project[i].time_1(run);
System.out.println("输入第"+i+"个作业开始运行的时间(秒)");
int get=in.nextInt();
project[i].time_2(get);
}
//以下是用于排序
open1 s1=new open1();
s1.open1_2(aa, project);
// //Test0
// for(int v=1;v<aa;v++)
// {
// System.out.println("vv"+project[v].vv);
// }
//以下是用于将正确的作业顺序填入JCB
JCB PP[]=new JCB[25];
for(int b=1;b<aa;b++)
{
PP[b]=new JCB();
for(int c=1;c<aa;c++ )//这里用于搜索在pro[]vv中的1234
{
if(project[c].vv==b)
{
PP[b]=project[c];
}
}
}
//test
for(int u=1;u<aa;u++)
{
System.out.println("第"+u+"处理: 原第"+PP[u].vv+"个作业——名称:"+PP[u].name+"到达时间:"+PP[u].gettime+"运行时间"+PP[u].runtime);
}
//录完go时间模块
Calendar c = Calendar.getInstance();
int gominute = c.get(Calendar.MINUTE);
int gosecond = c.get(Calendar.SECOND);
int all=gominute*60+gosecond;
//装逼提示用户系统开始时间(秒)
System.out.println("录完作业入系统的时间0");
//以下是开始执行各作业的运行情况
boolean go=true;int ii=1;int kk2=0;
boolean go2=true;
/*最外层循环*/do
{ // System.out.println("ii"+ii);
Calendar b = Calendar.getInstance();
/*0延迟更新时间*/int m = b.get(Calendar.MINUTE)*60;
int s = b.get(Calendar.SECOND)+m;//现时间总和
//以下这部分专门用来显示时间
int kk=s-all;
if(kk==kk2)
{
System.out.println("系统时间:第"+kk+"秒");
}
kk2=kk+1;
int yy=PP[ii].runtime;//这里不知为何要用int来传入PP【ii】.runtime,测试后发现这个可行
if(s==PP[ii].gettime+all)//当时间到达任务开始的时间
{
System.out.println("第"+ii+"个作业的到达时间"+PP[ii].gettime);
System.out.println("作业"+ii+"正在运行");
/*在该作业中不断循环时间 直至时间跳到now=s(记录的是该作业开始运行的时间)+runtime*/
go2=true;//使下个作业能再进去
while(go2)
{
Calendar d = Calendar.getInstance();//可以对每个时间域单独修改
int m3 = d.get(Calendar.MINUTE)*60;
int s3 = d.get(Calendar.SECOND)+m3;//数出的最新的时间
/*判断*/ if(s+yy==s3)
{
System.out.println("任务作业"+ii+"名字"+PP[ii].name+"状态:完成");
PP[ii].zt="作业完成";
int nowt2=s3-all;
System.out.println("现在系统时间"+nowt2);
go2=false;
//然后再判断现时间是否超过下一作业的开始时间 是则 替代之
if(ii+1<=aa-1)//限制ii+1的范围 避免空
{
if(nowt2>=PP[ii+1].gettime)
{
PP[ii+1].gettime=nowt2;
}
}
ii++;
}
//跳出来了
if(ii==aa)
{
go=false;
} } }
}while(go);
System.out.println(" 你的要求全部完成 ");
} }
class JCB{
public String name,zt;//作业名 运行状态
public int vv;//用来排完顺序后存储原来的作业号
public int runtime;//运行所需要时间
public int gettime;//到达时间
//从这里录入
public void inmessage(String zt)
{
this.zt=zt;
}
public void time_1(int cd)
{
this.runtime=cd;
}
public void time_2(int gd)
{
this.gettime=gd;
}
}
class SYS_START
{
public int gomm; //记录全部作业开始时的时间
public int goss; //记录全部作业开始时的时间
public int allstart;//这个是将全部作业开始的时间化为秒数
public SYS_START()
{
this.allstart=gomm*60+goss;
}
public void gommtime(int mmtime)
{
this.gomm=mmtime;
}
public void gosstime(int sstime)
{
this.goss=sstime;
} }
class open1
{
public void open1_2(int aa,JCB project[])
{
//以下是开始排序来达到先来先到处理算法:采用的是冒泡排序法
int temp=0;
for(int i=1;i<aa;i++)
{
for(int y=aa-1;y>i;y--)
{
if(project[y].gettime<project[y-1].gettime)
{
temp=project[y].vv;
project[y].vv=project[y-1].vv;
project[y-1].vv=temp;
}
}
}
}
} 啊啊啊啊啊啊啊!!!
被一句pk掉
Thread.sleep(1000);

啊啊啊 草蛋啊 之前努力一天搞出来的时间算法 被一句pk掉 给我砖头的更多相关文章

  1. druid 源码分析与学习(含详细监控设计思路的彩蛋)(转)

    原文路径:http://herman-liu76.iteye.com/blog/2308563  Druid是阿里巴巴公司的数据库连接池工具,昨天突然想学习一下阿里的druid源码,于是下载下来分析了 ...

  2. 学习思考:思考>努力

    学.习.思.考 学习.思考,这2个词,4个字,其实代表了4个不同的动作:学.习.思.考. 学,就是从外部(他人)获得. 习,就是练习,行动. 思,就是从内部(自己)获得. 考,就是考量,检测. 因此, ...

  3. 【英语魔法俱乐部——读书笔记】 1 初级句型-简单句(Simple Sentences)

    第一部分 1 初级句型-简单句(Simple Sentences):(1.1)基本句型&补语.(1.2)名词短语&冠词.(1.3)动词时态.(1.4)不定式短语.(1.5)动名词.(1 ...

  4. 人生规划和GTD——“知”、“得”与“合”

    写在前面:非常不错的一篇GTD入门以及人生目标与规划的文章,值得收藏. 本文来自 零折 作为<小强升职记>的读书感悟,给我自己.作为分享,也送给或许需要的给你. 我不知道你是否真的需要.但 ...

  5. HDU_1016——素环问题DFS

    Problem Description A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ... ...

  6. Vue 无限滚动加载指令

    也不存在什么加载咯, 就是一个判断滚动条是否到达浏览器底部了. 如果到了就触发事件,米到就不处理. 计算公式提简单的   底部等于(0) =  滚动条高度 - 滚动条顶部距离 - 可视高度.  反正结 ...

  7. 人生规划和GTD——"知"、"得"与"合"

    作为<小强升职记>的读书感悟,给我自己.作为分享,也送给或许需要的给你. 我不知道你是否真的需要.但我受Amy师姐等一众人的影响,已经爱上了分享.呵呵,话也可以倒过来说,其实分享也就是爱. ...

  8. 基于Django+celery二次开发动态配置定时任务 ( 二)

    一.需求 结合上一篇,使用djcelery模块开发定时任务时,定时任务的参数都保存在djcelery_periodictask表的args.kwargs字段里,并且是json格式.那么,当定时任务多了 ...

  9. 题解 【USACO 4.2.1】草地排水

    [USACO 4.2.1]草地排水 Description 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫 ...

随机推荐

  1. 【TOJ 2406】Power Strings(KMP找最多重复子串)

    描述 Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc& ...

  2. vue中使用codemirror

    https://blog.csdn.net/oumaharuki/article/details/79268498  别人的记载,写的很不错,还有下载的方法 以下是自己使用过的,做出来的例子: 做出来 ...

  3. redis缓存穿透和缓存失效的预防和解决

    缓存穿透: 认识 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透. 解决办法: 对所 ...

  4. PTA-BinarySearchTree BasicOperation

    /* 二叉查找树 基本操作 */#include <stdio.h> #include <stdlib.h> typedef int ElementType; typedef ...

  5. Hibernate第一天——入门和基本操作

    第一个接触的框架就是这个Hibernate框架了,Hibernate本意是 冬眠 ,这里有必要引用CSDN上某位网友某个帖子的评论先引出框架的概念: 框架:一个软件半成品,帮你做了一些基础工作,你就可 ...

  6. mysql数据库的左连接,右连接,内链接。

    一般所说的左连接,外连接是指左外连接,右外连接.做个简单的测试你看吧.先说左外连接和右外连接:[TEST1@orcl#16-12月-11] SQL>select * from t1; ID NA ...

  7. 洛谷 P4430 小猴打架

    洛谷 P4430 小猴打架 题目描述 一开始森林里面有N只互不相识的小猴子,它们经常打架,但打架的双方都必须不是好朋友.每次打完架后,打架的双方以及它们的好朋友就会互相认识,成为好朋友.经过N-1次打 ...

  8. pandas:由列层次化索引延伸的一些思考

    1. 删除列层次化索引 用pandas利用df.groupby.agg() 做聚合运算时遇到一个问题:产生了列方向上的两级索引,且需要删除一级索引.具体代码如下: # 每个uesr每天消费金额统计:和 ...

  9. bzoj 3232: 圈地游戏

    bzoj 3232: 圈地游戏 01分数规划,就是你要最大化\(\frac{\sum A}{\sum B}\),就二分这个值,\(\frac{\sum A}{\sum B} \geq mid\) \( ...

  10. 关于AutoMapper和WCF的一些认识

    现在互联网时代呈尚快速开发,快速迭代.伴随着必然产生一些好用的第三方工具,今天有幸看到了Automapper这种类似ORM的框架,但是跟ORM还不太一样, ORM是实体和数据库表之间的映射,而此框架主 ...