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. Linux服务-http

    目录 1. httpd简介 2. httpd版本 2.1 httpd的特性 2.2 httpd-2.4新增的模块 3. httpd基础 3.1 httpd自带的工具程序 3.2 rpm包安装的http ...

  2. QuestaSim 中文注释乱码

    在QuestaSim按如下顺序打开对应窗口, Tools -> Edit Preferences -> By Name -> Find 输入 encoding搜索对应项,将其valu ...

  3. struts2第三天——值栈

    大致内容: ognl概述 ognl入门 值栈 一.OGNL概述 OGNL,全称为Object-Graph Navigation Language,对象图导航语言 它是一个功能强大的表达式语言,用来获取 ...

  4. ~ManancherQwQ

    例题传送门 好久没写博客了,写一发. 之前学的Manacher算法拿到模板题找到那最后一个点的错误了,TMD没开long long. Manachar算法主要是处理字符串中关于回文串的问题的,它可以在 ...

  5. 北京Uber优步司机奖励政策(4月19日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  6. Linux部署python django程序-apache

    1.安装Apache 先卸载自带的httpd rpm -e httpd --nodeps 在网上下载四个文件 1.apr-1.4.6.tar.gz 2.apr-util-1.5.1.tar.gz 3. ...

  7. 编译、安装rdesktop 1.8.3

    来自:https://blog.csdn.net/songshimvp1/article/details/48290885 1.安装GCC: 安装C/C++编译器apt-get install gcc ...

  8. Developing modules for the Apache HTTP Server 2.4

    Developing modules for the Apache HTTP Server 2.4 Available Languages: en This document explains how ...

  9. UWP 自然灾害App在刷新数据后卡死的解决方案

    一直以为都在纳闷,为啥我的其他app崩溃次数几乎为0,而单单这个App的崩溃次数简直逆天了,我都不敢相信. 每天都有至少上千次crash...我也是服的 不甘心,趁着这次重构的机会,把代码好好捋了1下 ...

  10. 手动搭建openstack的痛苦经历

    openstack真的是一个十分痛苦的东西,好在有自动部署工具,虽然有自动部署工具可以方便我们部署使用,但是学习的话,第一次最好手动部署,因为手动部署更能我们了解openstack的工作流程和各组建之 ...