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. PHP切割字符用到的explode 以及计数count

    在thinkphp中同样可以用 explode来进行字符的切割工作,比如 $jihe='1,2,3,4'; 在使用explode之后,可以获得一个数组: $array=explode(',',$jih ...

  2. ARM汇编语言

    ---恢复内容开始--- arm汇编语言 汇编语言是一种程序设计语言,arm处理器是一种16/32位的嵌入式RISC微处理器.一开始我把这混为一谈了.ARM汇编的特点:汇编语言,又叫助记符语言. 1) ...

  3. [转载]C#委托与事件--简单笔记

    原文地址:https://www.cnblogs.com/joeymary/p/8486358.html 委托 简单记录点东西 适合似懂非懂的朋友看看委托类型用来定义和响应应用程序中的回调.借此可以设 ...

  4. 20155220 吴思其 《网络攻防》 Exp1 PC平台逆向破解(5)M

    20155220 <网络攻防> Exp1 PC平台逆向破解(5)M 实践内容 通过对实践对象--20155220pwn1的linux可执行文件的修改或输入,完成以下三块: 手工修改可执行文 ...

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

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

  6. 一天半时间大致的学习了HTML和CSS.

    目前需要经常练习的知识: 1.正则表达式 2.CSS 3.编程

  7. python基础学习1-正则表达式

    #!/usr/bin/env python # -*- coding:utf-8 -*- import re print(re.findall('alex','yyyyabbblalexrrreooo ...

  8. 牛客网NOIP赛前集训营-提高组(第六场)B-选择题[背包]

    题意 题目链接 分析 直接背包之后可以 \(O(n)\) 去除一个物品的影响. 注意特判 \([p==1]\) 的情况. 总时间复杂度为 \(O(n^2)\) . 代码 #include<bit ...

  9. virtualenvwrapper安装和常用指令(mac)

    安装: .安装(要有python环境+pip): * sudo pip install virtualenvwrapper .配置: 执行:vi ~/.bash_profile 在~/.bash_pr ...

  10. JUC——线程同步锁(ReentrantLock)

    ReentrantLock简介 ReentrantLock是一个可重复的互斥锁,又被称为独占锁,可重入的意思是:ReentrantLock锁可以被单个线程多次获取.但是在同一个时间点只能被一个线程锁持 ...