1 package yun3;
  2
  3 import java.io.BufferedReader;
  4 import java.io.InputStreamReader;
  5 import java.util.Calendar;
  6 import java.util.Scanner;
  7 public class number3 {
  8
  9     /**
 10      * * 作者:范铭祥
 11      * 功能:演示先来先到处理算法
 12      * 日志2:事实证明日志1的方法可用,但在系统运行过程中因为一些逻辑性问题而出错,我将画一张新逻辑图
 13      * 来解决这问题,现创建新程序解决,并缩略程序
 14      */
 15     public static void main(String[] args) throws Exception
 16     {
 17             System.out.println("是否要自定作业个数?Y/N");
 18             BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
 19             String choose=br.readLine();
 20             JCB[] project=new JCB[25];
 21             int aa=1;
 22             if(choose.equals("Y"))
 23             {
 24                 Scanner in=new Scanner(System.in);
 25                 System.out.println("请输入作业的个数");
 26                 aa=in.nextInt()+1;//这里aa预留大了1,后面只需用<符号
 27             }
 28             if(choose.equals("N"))
 29             {
 30                   aa=6;
 31             }
 32             //录入各项目的JBC数据
 33             System.out.println("以下是输入作业信息:\n");
 34             Scanner in=new Scanner(System.in);
 35             for(int i=1;i<aa;i++)
 36             {
 37
 38                 project[i]=new JCB();
 39                 project[i].vv=i;
 40                 System.out.println("请输入第"+i+"个作业的名字  ");
 41                 project[i].name=br.readLine();
 42                 project[i].inmessage("作业等待");
 43                 System.out.println("输入第"+i+"个作业所需的运行时间(秒)!");
 44                 int run=in.nextInt();
 45                 project[i].time_1(run);
 46                 System.out.println("输入第"+i+"个作业开始运行的时间(秒)");
 47                 int get=in.nextInt();
 48                 project[i].time_2(get);
 49             }
 50             //以下是用于排序
 51             open1 s1=new open1();
 52             s1.open1_2(aa, project);
 53 //            //Test0
 54 //            for(int v=1;v<aa;v++)
 55 //            {
 56 //                System.out.println("vv"+project[v].vv);
 57 //            }
 58             //以下是用于将正确的作业顺序填入JCB
 59             JCB PP[]=new JCB[25];
 60             for(int b=1;b<aa;b++)
 61             {
 62                 PP[b]=new JCB();
 63                 for(int c=1;c<aa;c++ )//这里用于搜索在pro[]vv中的1234
 64                 {
 65                     if(project[c].vv==b)
 66                     {
 67                         PP[b]=project[c];
 68                     }
 69                 }
 70             }
 71             //test
 72             for(int u=1;u<aa;u++)
 73             {
 74             System.out.println("第"+u+"处理: 原第"+PP[u].vv+"个作业——名称:"+PP[u].name+"到达时间:"+PP[u].gettime+"运行时间"+PP[u].runtime);
 75             }
 76             //录完go时间模块
 77             Calendar c = Calendar.getInstance();
 78             int gominute = c.get(Calendar.MINUTE);
 79             int gosecond = c.get(Calendar.SECOND);
 80             int all=gominute*60+gosecond;
 81             //装逼提示用户系统开始时间(秒)
 82             System.out.println("录完作业入系统的时间0");
 83             //以下是开始执行各作业的运行情况
 84             boolean go=true;int ii=1;int kk2=0;
 85             boolean go2=true;
 86 /*最外层循环*/do
 87             {
 88
 89 //            System.out.println("ii"+ii);
 90             Calendar b = Calendar.getInstance();
 91 /*0延迟更新时间*/int m = b.get(Calendar.MINUTE)*60;
 92             int s = b.get(Calendar.SECOND)+m;//现时间总和
 93             //以下这部分专门用来显示时间
 94             int kk=s-all;
 95             if(kk==kk2)
 96             {
 97                 System.out.println("系统时间:第"+kk+"秒");
 98             }
 99             kk2=kk+1;
100             int yy=PP[ii].runtime;//这里不知为何要用int来传入PP【ii】.runtime,测试后发现这个可行
101             if(s==PP[ii].gettime+all)//当时间到达任务开始的时间
102             {
103                 System.out.println("第"+ii+"个作业的到达时间"+PP[ii].gettime);
104                 System.out.println("作业"+ii+"正在运行");
105 /*在该作业中不断循环时间 直至时间跳到now=s(记录的是该作业开始运行的时间)+runtime*/
106                 go2=true;//使下个作业能再进去
107                 while(go2)
108                 {
109                 Calendar d = Calendar.getInstance();//可以对每个时间域单独修改
110                 int m3 = d.get(Calendar.MINUTE)*60;
111                 int s3 = d.get(Calendar.SECOND)+m3;//数出的最新的时间
112 /*判断*/            if(s+yy==s3)
113                 {
114                   System.out.println("任务作业"+ii+"名字"+PP[ii].name+"状态:完成");
115                   PP[ii].zt="作业完成";
116                   int nowt2=s3-all;
117                   System.out.println("现在系统时间"+nowt2);
118                   go2=false;
119                   //然后再判断现时间是否超过下一作业的开始时间 是则 替代之
120                   if(ii+1<=aa-1)//限制ii+1的范围 避免空
121                   {
122                   if(nowt2>=PP[ii+1].gettime)
123                   {
124                       PP[ii+1].gettime=nowt2;
125                   }
126                   }
127                   ii++;
128                 }
129 //跳出来了
130                 if(ii==aa)
131                 {
132                     go=false;
133                 }
134
135                 }
136
137             }
138             }while(go);
139             System.out.println("                                         你的要求全部完成                                                                                              ");
140     }
141
142 }
143 class JCB{
144     public String name,zt;//作业名  运行状态
145     public int vv;//用来排完顺序后存储原来的作业号
146     public int runtime;//运行所需要时间
147     public int gettime;//到达时间
148     //从这里录入
149     public void inmessage(String zt)
150     {
151         this.zt=zt;
152     }
153     public void time_1(int cd)
154     {
155         this.runtime=cd;
156     }
157     public void time_2(int gd)
158     {
159         this.gettime=gd;
160     }
161 }
162 class SYS_START
163 {
164     public int gomm; //记录全部作业开始时的时间
165     public int goss; //记录全部作业开始时的时间
166     public int allstart;//这个是将全部作业开始的时间化为秒数
167     public SYS_START()
168     {
169         this.allstart=gomm*60+goss;
170     }
171     public void gommtime(int mmtime)
172      {
173          this.gomm=mmtime;
174      }
175     public void gosstime(int sstime)
176     {
177         this.goss=sstime;
178     }
179
180 }
181 class open1
182 {
183     public void open1_2(int aa,JCB project[])
184     {
185           //以下是开始排序来达到先来先到处理算法:采用的是冒泡排序法
186         int temp=0;
187         for(int i=1;i<aa;i++)
188         {
189                 for(int y=aa-1;y>i;y--)
190                 {
191                    if(project[y].gettime<project[y-1].gettime)
192                    {
193                        temp=project[y].vv;
194                        project[y].vv=project[y-1].vv;
195                        project[y-1].vv=temp;
196                    }
197                 }
198         }
199     }
200 }

啊啊啊啊啊啊啊!!!被一句pk掉Thread.sleep(1000);

转载于:https://www.cnblogs.com/vip-fan1234xiang/p/4426332.html

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

  1. 测试员老张发觉越努力越费劲,越加班时间却越不够用,只能陷入低效率的加班中,循环往复

    目录:导读 前言 一.测试方案 二.测试用例 三.性能测试 四.个人简历 五.各个面试题 六.总结 前言 都在面临些什么? 越努力越费劲,越加班时间却越不够用 张某某在一家老牌国企任职,在企业被并购前 ...

  2. 三大扯蛋、四大怪事、五大谎言、六大....超精辟!

    三大扯蛋: 靠工资买房的是扯蛋: 靠努力升官的是扯蛋: 靠保健长寿的是扯蛋. 四大怪事: 做人不如狗受宠爱: 做事的不如告密的受信赖: 内行的不如外行的提的快: 忽悠的比敬业的更豪迈. 五大谎言: 服 ...

  3. android 彩蛋 miui,MIUI12最新更新,安卓11彩蛋终于出现,流畅度提升

    原标题:MIUI12最新更新,安卓11彩蛋终于出现,流畅度提升 经过了几天连续推迟,基于安卓11 beta3的MIUI12终于更新,版本号为MIUI12 20.8.20,此次更新系统整体体验提升明显, ...

  4. 什么是天灾人祸,天灾是智商比较低,什么是人祸,人祸就是自己还不努力

    有很多刚毕业的大学生好像经不起任何打击,别人只能好话哄着,恭维着.领导也不能批评,一批评这想法就多了,好点的就说是工作压力大了,差点的就说是阴谋,XXX要整我,等等奇谈怪论不一而足.比如最近我就遇到了 ...

  5. 你这么努力,为何还如此焦虑?

    文/小岩井 一 有个学生,暑假报名来学日语.因为半年后要去日本留学,所以很认真地每天在学校上课和自修. 然而他学得并不好.应该说是很不好.他是某重点大学的理科毕业生,按理说智商肯定没问题.也很努力,可 ...

  6. 观李永乐老师《双蛋问题》解题后感

    观李永乐老师<双蛋问题>解题后感 题目开始前,随便说几句. 随便说几句,就是随随便便说的,看不懂没关系.随便说,可能会表达得不好,当作阅读前的热身 . 李永乐老师双蛋问题,大概就是讲,给你 ...

  7. 老男孩教育 | 努力5个月,收获年薪20w,成功转行!

    隔行如隔山,转行难,难于上青天!这几乎是99%职场人的共同感受! 经常听到有人问:将近30岁还能转行做IT吗?转行IT还能找到工作吗?我想说的是30岁转行学IT不是没有前途,关键在于你自己,你有没有决 ...

  8. 运气比选择重要,选择比努力重要

    曾经幼稚地以为只要凭着自己的努力就一定能达到成功的顶峰,现在看来,最重要的因素也许还是运气.从创业失败(05年初)到现在,一直梦想能成为某一方面的技术专家,然而外包公司的现状没能给我这个机会,因为那里 ...

  9. 洗布草标签对于服装、工业洗涤的应用方案

    洗布草标签的应用背景 专业洗衣公司每年处理数以上万计的工作服,布草制品.面临整个换洗的运送.洗涤.熨烫.整理和送还的过程,单靠传统人工清点统计已不能满足行业所需.如何缩减布布草清洗的整个时间周期,明确 ...

最新文章

  1. golang 多行字符串 字符串太长分行写
  2. NIO的Buffer
  3. mysql select time,MySql查询时间段的方法
  4. VideoLAN、VLC 和 FFmpeg联合开发AV1 解码器 Dav1d
  5. 如何使用R语言在SAP Analytics Cloud里绘制各种统计图表
  6. python opencv2_python opencv2 api
  7. C++学习之路 | PTA乙级—— 1034 有理数四则运算 (20 分)(精简)
  8. gin ip 和 本地访问的结果不一样_golang web开发——gin实战之整合swagger
  9. 西邮计算机学院院长,西安邮电大学计算机学院
  10. 59. DNS 服务器
  11. 深入了解mysql 5.5分区功能增强_深入了解MySQL 5.5分区功能增强
  12. roundcube mysql_Roundcube Webmail 安装配置
  13. 深度学习之目标检测--Pytorch实战
  14. 怎么修改背景图片大小的HTML代码,css如何改变背景图片大小?
  15. Linux 下 JbossEAP 6.2安装与实例部署
  16. 工控攻击,黑客组织GhostSec 称入侵以色列55 家Berghof PLC
  17. 【PS】Adobe Photoshop 2020中扣名字
  18. 包,内部类,常用类,集合
  19. 这,不是我想要的生活
  20. PyCharm快捷键(替换和查找)

热门文章

  1. English学习资料大全
  2. Maven 项目的 org.junit.Test 获取不到(转载)
  3. Linux下locale: Cannot set LC_CTYPE to default locale: No such file or directory警告
  4. intellij默认maven仓库配置路径+默认New Project 工程路径
  5. Spark的三种伪分布式方式
  6. 子线程和主线程的关系
  7. sublime使用正则匹配
  8. C++Primer模板
  9. 机器学习数据挖掘笔记_15(关于凸优化的一些简单概念)
  10. QT-Qt获取当前时间并格式化输出及将积秒转换成时间