啊啊啊 草蛋啊 之前努力一天搞出来的时间算法 被一句pk掉 给我砖头
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掉 给我砖头的更多相关文章
- druid 源码分析与学习(含详细监控设计思路的彩蛋)(转)
原文路径:http://herman-liu76.iteye.com/blog/2308563 Druid是阿里巴巴公司的数据库连接池工具,昨天突然想学习一下阿里的druid源码,于是下载下来分析了 ...
- 学习思考:思考>努力
学.习.思.考 学习.思考,这2个词,4个字,其实代表了4个不同的动作:学.习.思.考. 学,就是从外部(他人)获得. 习,就是练习,行动. 思,就是从内部(自己)获得. 考,就是考量,检测. 因此, ...
- 【英语魔法俱乐部——读书笔记】 1 初级句型-简单句(Simple Sentences)
第一部分 1 初级句型-简单句(Simple Sentences):(1.1)基本句型&补语.(1.2)名词短语&冠词.(1.3)动词时态.(1.4)不定式短语.(1.5)动名词.(1 ...
- 人生规划和GTD——“知”、“得”与“合”
写在前面:非常不错的一篇GTD入门以及人生目标与规划的文章,值得收藏. 本文来自 零折 作为<小强升职记>的读书感悟,给我自己.作为分享,也送给或许需要的给你. 我不知道你是否真的需要.但 ...
- HDU_1016——素环问题DFS
Problem Description A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ... ...
- Vue 无限滚动加载指令
也不存在什么加载咯, 就是一个判断滚动条是否到达浏览器底部了. 如果到了就触发事件,米到就不处理. 计算公式提简单的 底部等于(0) = 滚动条高度 - 滚动条顶部距离 - 可视高度. 反正结 ...
- 人生规划和GTD——"知"、"得"与"合"
作为<小强升职记>的读书感悟,给我自己.作为分享,也送给或许需要的给你. 我不知道你是否真的需要.但我受Amy师姐等一众人的影响,已经爱上了分享.呵呵,话也可以倒过来说,其实分享也就是爱. ...
- 基于Django+celery二次开发动态配置定时任务 ( 二)
一.需求 结合上一篇,使用djcelery模块开发定时任务时,定时任务的参数都保存在djcelery_periodictask表的args.kwargs字段里,并且是json格式.那么,当定时任务多了 ...
- 题解 【USACO 4.2.1】草地排水
[USACO 4.2.1]草地排水 Description 在农夫约翰的农场上,每逢下雨,贝茜最喜欢的三叶草地就积聚了一潭水.这意味着草地被水淹没了,并且小草要继续生长还要花相当长一段时间.因此,农夫 ...
随机推荐
- 二、用Delphi10.3 创建一条JSON数据的第二种方法,并格式化输出
一.用Delphi10.3构造一个JSON数据的第二种方法,并格式化输出,代码如下: uses //System.JSON, System.JSON.Types, System.JSON.Writer ...
- Qt中的QString和QStringList常用方法
QString //QString定义 QString s1 = "abc"; QString s2("hello"); //字符串连接 QString s = ...
- gulp安装搭建前端项目自动化
下面是今天在配置gulp运行项目时遇到的问题几个问题及其完整的安装过程: 1.安装node.js .gulp是基于nodejs使用的 查看版本node -v 2.npm install gulp ...
- 1o xiaomi
atom 取色器 div.contine tab 补齐
- ASP.NET Core开发期间部署到IIS自定义主机域名并附加到进程调试
在.NET Framework环境下,我们经常会这么做 把一个web项目不经过发布直接部署到IIS里去,配置上主机名,修改一下hosts文件,就可以用自定义的域名来访问我们的应用程序,使用附加到进程( ...
- unable to locate package
一.问题 在ubuntu上安装npm时 sudo apt-get install npm 出现了错误: unable to lcoate package npm 二.解决办法 更新下apt就好了 su ...
- Java中的Union Types和Intersection Types
前言 Union Type和Intersection Type都是将多个类型结合起来的一个等价的"类型",它们并非是实际存在的类型. Union Type Union type(联 ...
- 一个很NB的404页面
一个带彩蛋的 404 页面 不得不说这个程序猿很有才 前往404页面 触发方法 按住鼠标左键 在页面中心不停的画圈 就可以进入神奇的地方了
- 微信小程序-帝国cms会员系统调用
在用户->管理会员字段,增加如下字段:openidsession_keylsktokennicknameheadimg设置用户名长度然后,在系统,系统变最设置,用户设置,将注册用户名设置长度改成 ...
- windows 平台安装 ffmpeg
一.从https://ffmpeg.zeranoe.com/builds/中下载ffmpeg的static版本: 二.将下载下来的“ffmpeg-4.0.2-win64-static.zip”解压到任 ...