---------------------- asp.net+android+ios開發、
.net培訓、期待與您交流! ----------------------
需求:非同步隨機生成按照各個路線行駛的車輛。
訊號燈忽略黃燈,只考慮紅燈和綠燈。
應考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈控制。
具體訊號燈控制邏輯與現實生活中普通交通燈控制邏輯相同,不考慮特殊情況下的控制邏輯。
注:南北向車輛與東西向車輛交替放行,同方向等待車輛應先放行直行車輛而後放行左轉車輛。
隨機生成車輛時間間隔以及紅綠燈交換時間間隔自定,可以設定。
不要求實現gui,只考慮系統邏輯實現,可通過log方式展現程式執行結果。
分析: n
w e
s 路(road),有十二條不同方向的路線(s2n,n2s,s2w,n2e,e2w,w2e,e2s,w2n,s2e,e2n,n2w,w2s)。
路上有車輛資訊(可以通過乙個集合來儲存)。
燈(lamp),燈控制路線上的車是否可以通行。十二條路線對應十二盞燈。燈有紅綠狀態,讓乙個控制器控制。
控制燈的控制器(lampcontroller),對燈進行控制,讓當前綠燈定時變紅。
各個類的實現:
路 (road)
public class road
/* * 隨機1-10秒在當前路線產生一輛車。
*/private void vehiclecoming() catch (interruptedexception e)
vehicles.add(name + "---" + i);
system.out.println(name + "----" + i + "vehicle coming.");}}
});
} /*
* 啟動定時器,每隔一秒檢查當前路對應的燈是否是綠燈
* 如果是綠燈,移走第一輛車。
*/private void vehiclegone()}}
}, 1,
1, timeunit.seconds);
}}
燈(lamp)通過列舉實現
public enum lamp
private lamp(string opposite, string nextlamp, boolean lighting)
public boolean islighting()
/* * 讓燈變綠方法
* 乙個燈變綠時,如果有相對應的燈,相對應的燈也要變綠
*/public void light()
} /*
* 燈變紅方法
* 乙個燈變紅,如果有相對應的燈,相對應的燈也要變紅。
*/public lamp blackout()
if(this.nextlamp != null)
return lamp.valueof(this.nextlamp);
}}
控制燈的控制器(lampcontroller)
public class lampcontroller
/* * 定時將currentlamp儲存的當前綠燈變成紅燈。
*/private void changelamp()
}, 2, 2, timeunit.seconds);
}}
測試功能是否完成(trafficlightstest)
public class trafficlightstest ;
new lampcontroller(lamp.s2n);
for(int i=0,end=directions.length-1; i<=end; i++)
}}
---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------
黑馬程式設計師 java基礎 封裝
asp.net unity開發 net培訓 期待與您交流!封裝表示吧資料項和方法隱藏在物件內部,在類定義中用private關鍵字來實現封裝。封裝有什麼好處?用private把類的細節與外界隔離起來,從而實現資料項和方法的隱藏,而要訪問這些資料項和方法唯一的途徑就是通過類本身,類才有資格呼叫它所擁有的...
黑馬程式設計師 Java基礎 陣列
1.陣列的定義格式 1 int arry new int 5 2 int arry new int 5 int arry 3 常見問題 陣列越界異常 空指標異常。2.陣列常見操作 1 遍歷,查詢陣列,輸出陣列 int arry new int 3 for int i 0 i 3 i int a fo...
黑馬程式設計師 交通燈
asp.net unity開發 net培訓 期待與您交流!交通燈管理系統 1,首先向張孝祥老師致敬 張孝祥老師語錄 i.害羞是找不到工作的。ii.細節見真英雄 iii.新技術是為解決問題而誕生的 iv.人的精力是有限的,應該把精力留給自己最愛的事業上,或者最主要的事情上 v.人的精力就那麼一點,不能...