啊啊啊 草蛋啊 之前努力一天搞出来的时间算法 被一句pk掉 给我砖头
2015-04-14 22:24
375 查看
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=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掉 [b]Thread.sleep(1000);
相关文章推荐
- SNS算法比赛--搞错时间了,没交上就贴出来玩玩,希望大家指教
- 假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润
- 求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
- PHP实现指定时间的n月之前的这一天的两种算法
- 求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
- 在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?
- Java 常用的时间算法 返回时间集合 时间差 返回加N天后的日期 判断是否同一天
- 假如一个数组存储了一个股票,在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,请提供一个算法,计算出通过买入和卖出可以得到的最大利润
- 求一个论坛的在线人数,假设有一个论坛,其注册ID有两亿个,每个ID从登陆到退出会向一个日志文件中记下登陆时间和退出时间,要求写一个算法统计一天中论坛的用户在线分布,取样粒度为秒。
- 在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次?都分别是什么时间?你怎样算出来的?
- 在一天的24小时之中,时钟的时针、分针和秒针完全重合在一起的时候有几次? 都分别是什么时间?你怎样算出来的?(5分钟-15分钟)
- 算法探究:线性时间选择问题
- 分享:我用一天时间开发的 新年送祝福 微信手机网站(可在线体验附图)(要代码的留下邮箱)
- 日期和时间运算:上月最后一天
- 剑指offer 算法 (时间空间效率的平衡)
- php获取本周周一、周日时间,上周周一、周日时间,本月第一天,本月最后一天,上个月第一天,最后一天
- java月份时间(第一天,最后一天)
- 根据当期时间得到本周第一天和最后一天
- 程序员的一天----时间、事件、感觉
- 一天一个小算法--排序之冒泡