啊啊啊 草蛋啊 之前努力一天搞出来的时间算法 被一句pk掉 给我砖头
生活随笔
收集整理的這篇文章主要介紹了
啊啊啊 草蛋啊 之前努力一天搞出来的时间算法 被一句pk掉 给我砖头
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
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:事實(shí)證明日志1的方法可用,但在系統(tǒng)運(yùn)行過程中因?yàn)橐恍┻壿嬓詥栴}而出錯(cuò),我將畫一張新邏輯圖
13 * 來解決這問題,現(xiàn)創(chuàng)建新程序解決,并縮略程序
14 */
15 public static void main(String[] args) throws Exception
16 {
17 System.out.println("是否要自定作業(yè)個(gè)數(shù)?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("請輸入作業(yè)的個(gè)數(shù)");
26 aa=in.nextInt()+1;//這里aa預(yù)留大了1,后面只需用<符號
27 }
28 if(choose.equals("N"))
29 {
30 aa=6;
31 }
32 //錄入各項(xiàng)目的JBC數(shù)據(jù)
33 System.out.println("以下是輸入作業(yè)信息:\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+"個(gè)作業(yè)的名字 ");
41 project[i].name=br.readLine();
42 project[i].inmessage("作業(yè)等待");
43 System.out.println("輸入第"+i+"個(gè)作業(yè)所需的運(yùn)行時(shí)間(秒)!");
44 int run=in.nextInt();
45 project[i].time_1(run);
46 System.out.println("輸入第"+i+"個(gè)作業(yè)開始運(yùn)行的時(shí)間(秒)");
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 //以下是用于將正確的作業(yè)順序填入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+"個(gè)作業(yè)——名稱:"+PP[u].name+"到達(dá)時(shí)間:"+PP[u].gettime+"運(yùn)行時(shí)間"+PP[u].runtime);
75 }
76 //錄完go時(shí)間模塊
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 //裝逼提示用戶系統(tǒng)開始時(shí)間(秒)
82 System.out.println("錄完作業(yè)入系統(tǒng)的時(shí)間0");
83 //以下是開始執(zhí)行各作業(yè)的運(yùn)行情況
84 boolean go=true;int ii=1;int kk2=0;
85 boolean go2=true;
86 /*最外層循環(huán)*/do
87 {
88
89 // System.out.println("ii"+ii);
90 Calendar b = Calendar.getInstance();
91 /*0延遲更新時(shí)間*/int m = b.get(Calendar.MINUTE)*60;
92 int s = b.get(Calendar.SECOND)+m;//現(xiàn)時(shí)間總和
93 //以下這部分專門用來顯示時(shí)間
94 int kk=s-all;
95 if(kk==kk2)
96 {
97 System.out.println("系統(tǒng)時(shí)間:第"+kk+"秒");
98 }
99 kk2=kk+1;
100 int yy=PP[ii].runtime;//這里不知為何要用int來傳入PP【ii】.runtime,測試后發(fā)現(xiàn)這個(gè)可行
101 if(s==PP[ii].gettime+all)//當(dāng)時(shí)間到達(dá)任務(wù)開始的時(shí)間
102 {
103 System.out.println("第"+ii+"個(gè)作業(yè)的到達(dá)時(shí)間"+PP[ii].gettime);
104 System.out.println("作業(yè)"+ii+"正在運(yùn)行");
105 /*在該作業(yè)中不斷循環(huán)時(shí)間 直至?xí)r間跳到now=s(記錄的是該作業(yè)開始運(yùn)行的時(shí)間)+runtime*/
106 go2=true;//使下個(gè)作業(yè)能再進(jìn)去
107 while(go2)
108 {
109 Calendar d = Calendar.getInstance();//可以對每個(gè)時(shí)間域單獨(dú)修改
110 int m3 = d.get(Calendar.MINUTE)*60;
111 int s3 = d.get(Calendar.SECOND)+m3;//數(shù)出的最新的時(shí)間
112 /*判斷*/ if(s+yy==s3)
113 {
114 System.out.println("任務(wù)作業(yè)"+ii+"名字"+PP[ii].name+"狀態(tài):完成");
115 PP[ii].zt="作業(yè)完成";
116 int nowt2=s3-all;
117 System.out.println("現(xiàn)在系統(tǒng)時(shí)間"+nowt2);
118 go2=false;
119 //然后再判斷現(xiàn)時(shí)間是否超過下一作業(yè)的開始時(shí)間 是則 替代之
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;//作業(yè)名 運(yùn)行狀態(tài)
145 public int vv;//用來排完順序后存儲(chǔ)原來的作業(yè)號
146 public int runtime;//運(yùn)行所需要時(shí)間
147 public int gettime;//到達(dá)時(shí)間
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; //記錄全部作業(yè)開始時(shí)的時(shí)間
165 public int goss; //記錄全部作業(yè)開始時(shí)的時(shí)間
166 public int allstart;//這個(gè)是將全部作業(yè)開始的時(shí)間化為秒數(shù)
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 //以下是開始排序來達(dá)到先來先到處理算法:采用的是冒泡排序法
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);
啊啊啊啊啊啊啊!!!
被一句pk掉
Thread.sleep(1000);
?
轉(zhuǎn)載于:https://www.cnblogs.com/vip-fan1234xiang/p/4426332.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的啊啊啊 草蛋啊 之前努力一天搞出来的时间算法 被一句pk掉 给我砖头的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: EntityFramwork(1) 源地
- 下一篇: 猛男必入 粉粉嫩嫩的RTX 4070显卡