zoukankan      html  css  js  c++  java
  • 啊啊啊 草蛋啊 之前努力一天搞出来的时间算法 被一句pk掉 给我砖头

      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("以下是输入作业信息:
    ");
     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);
  • 相关阅读:
    漫谈iOS程序的证书和签名机制
    (转) Xcode 7 Bitcode
    iOS: How To Make AutoLayout Work On A ScrollView
    Objective C运行时(runtime)
    如何让iOS 保持界面流畅?这些技巧你知道吗
    iPhone 6 屏幕揭秘
    用HTML和CSS实现WWDC 2015上的动画效果
    桌球歷史:削球、快攻、弧圈球
    [WPF 自定义控件]自定义控件库系列文章
    UWP 自定义控件:了解模板化控件 系列文章
  • 原文地址:https://www.cnblogs.com/vip-fan1234xiang/p/4426332.html
Copyright © 2011-2022 走看看