• 啊啊啊 草蛋啊 之前努力一天搞出来的时间算法 被一句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);
  • 相关阅读:
    DIY 作品 及 维修 不定时更新
    置顶,博客中所有源码 github
    openwrt PandoraBox PBR-M1 极路由4 HC5962 更新固件
    使用 squid 共享 虚拟专用网至局域网
    第一次参加日语能力测试 N5
    libx264 libfdk_aac 编码 解码 详解
    开发RTSP 直播软件 H264 AAC 编码 live555 ffmpeg
    MFC Camera 摄像头预览 拍照
    http2 技术整理 nginx 搭建 http2 wireshark 抓包分析 server push 服务端推送
    plist 图集 php 批量提取 PS 一个个切
  • 原文地址:https://www.cnblogs.com/vip-fan1234xiang/p/4426332.html
Copyright © 2020-2023  润新知