黑馬程式設計師_7k交通燈管理系統
3)LampController類package com.isoftstone.interview.traffic; /* * 每個Lamp元素代表一個方向上的燈,總共有12個方向,所有總共有12個Lamp元素。 * 有如下一些方向上的燈,每兩個形成一組,一組燈同時變綠或變紅,所以, * 程式程式碼只需要控制每組燈中的一個燈即可: * s2n,n2s * s2w,n2e * e2w,w2e * e2s,w2n * s2e,n2w * e2n,w2s * 上面最後兩行的燈是虛擬的,由於從南向東和從西向北、以及它們的對應方向不受紅綠燈的控制, * 所以,可以假想它們總是綠燈。 */ /* * S2N,S2W,E2W,E2S, * N2S,N2E,W2E,W2N, * S2E,E2N,N2W,W2S; * */ public enum Lamp { /* 每個列舉元素各表示一個方向的控制燈 */ S2N("N2S",false,"S2W"),S2W("N2E",false,"E2W"),E2W("W2E",false,"E2S"),E2S("W2N",false,"S2N"), /* 下面元素表示與上面的元素的相反方向的燈,它們的"相反方向燈"和"下一個燈"應忽略不計! */ N2S(null,false,null),N2E(null,false,null),W2E(null,false,null),W2N(null,false,null), /* 由南向東和由西向北等右拐彎的燈不受紅綠燈的控制,所以,可以假想它們總是綠燈 */ S2E(null,true,null),E2N(null,true,null),N2W(null,true,null),W2S(null,true,null); private Lamp(){} private Lamp(String oppositeLampName,boolean lighted,String nextLampName){ this.oppositeLampName=oppositeLampName; this.lighted=lighted; this.nextLampName=nextLampName; } /* 當前燈是否為綠 */ private boolean lighted; /* 與當前燈同時為綠的對應方向 */ private String oppositeLampName; /* 當前燈變紅時下一個變綠的燈 */ private String nextLampName; /** * 返回燈的狀態 * */ public boolean isLighted(){ return lighted; } /** * 某個燈變綠時,它對應方向的燈也要變綠 */ public void light(){ this.lighted=true; if(oppositeLampName!=null){ Lamp.valueOf(oppositeLampName).light(); } System.out.println(name() +" lamp is green,下面總共應該有6個方向能看到汽車穿過!"); } /** * 某個燈變紅時,對應方向的燈也要變紅,並且下一個方向的燈要變綠 * * @return 下一個要變綠的燈 */ public Lamp blackOut(){ this.lighted=false; if(oppositeLampName!=null){ Lamp.valueOf(oppositeLampName).blackOut(); } Lamp nextLamp =null; if(nextLampName!=null){ nextLamp = Lamp.valueOf(nextLampName); System.out.println("綠燈從"+ name() + "-------->切換為" + nextLampName); nextLamp.light(); } return nextLamp; } }
a、整個系統中只能有一套交通燈控制系統,所以,LampController類最好是設計成單例。c、LampController構造方法中要設定第一個為綠的燈。
c、LampController物件的start方法中將當前燈變綠,然後啟動一個定時器,每隔10秒將當前燈變紅和將下一個燈變綠。
原始碼如下:
package com.isoftstone.interview.traffic; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; public class LampController { private Lamp currentLamp; private LampController(){} private static LampController controller = null; public static LampController getInstran(){ if(controller==null){ synchronized (LampController.class) { if(controller==null){ controller=new LampController(); return controller; } } } return controller; } public void start(){ //剛開始讓由南向北的燈變綠; currentLamp = Lamp.S2N; currentLamp.light(); /*每隔10秒將當前綠燈變為紅燈,並讓下一個方向的燈變綠*/ ScheduledExecutorService timer =Executors.newScheduledThreadPool(1); timer.scheduleAtFixedRate( new Runnable(){ @Override public void run() { currentLamp = currentLamp.blackOut(); } }, 10, 10, TimeUnit.SECONDS); } }
4)MainClass類
a、用for迴圈創建出代表12條路線的物件。
b、接著創建出LampController物件。
原始碼如下:
package com.isoftstone.interview.traffic; public class MainClass { public static void main(String[] args) { String [] directions = { "S2N","S2W","E2W","E2S", "N2S","N2E","W2E","W2N", "S2E","E2N","N2W","W2S"}; for(int i=0;i<directions.length;i++){ new Road(directions[i]); } LampController.getInstran().start(); } }
相關推薦
黑馬程式設計師_7k交通燈管理系統
package com.isoftstone.interview.traffic; /* * 每個Lamp元素代表一個方向上的燈,總共有12個方向,所有總共有12個Lamp元素。 * 有如下一些方向上的燈,每兩個形成一組,一組燈同時變綠或變紅,所以, * 程式程式碼只需要控制每組燈中的一個
黑馬程式設計師——面試——交通燈管理系統
---------- android培訓、java培訓、java學習型技術部落格、期待與您交流! ---------- 交通燈管理系統的專案需求 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下: 非同步
黑馬程式設計師_7k面試題之交通燈管理系統
交通燈管理系統 1. 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下:非同步隨機生成按照各個路線行駛的車輛。例如:由南向而來去往北向的車輛---- 直行車輛由西向而來去往南向的車輛---- 右轉車輛由東向而來去往南向的車輛---- 左轉車輛 ...... 訊號燈忽略黃燈,只考
黑馬程式設計師_7k面試題(交通燈管理系統)學習筆記
總共有12條路線,為了統一程式設計模型,可以假設每條路線都有一個紅綠燈對其進行控制,右轉彎的4條路線的控制燈可以假設稱為常綠狀態,另外,其他的8條線路是兩兩成對的,可以歸為4組,所以,程式只需考慮圖中標註了數字號的4條路線的控制燈的切換順序,這4條路線相反方向的路線的控制燈跟隨這4條路線切換,不必額外考慮
黑馬程式設計師_7K面試題_交通燈管理系統
-面向物件分析設計經驗:誰用於資料,誰就對外提供操作這些資料的方法。 典型案例: 人在黑板上畫圓。 分析: 共有三個物件:人、黑板、圓。動作:畫 畫圓需要圓心和半徑,圓心和半徑都是圓的屬性上,圓擁有資料,所以圓物件提供畫圓的方法 圓在黑板上,黑板擁有
黑馬程式設計師------面試題------交通燈管理系統
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">
黑馬程式設計師----7k面試題之交通燈管理系統
畫圖非常有助於分析和理解問題。 十字路總共有12條線路,為了統一程式設計模型,可以假設每條線路都有一個紅綠燈對其進行控制, 右拐的四條線路假設稱為常綠狀態,另外,其他的8條兩兩成對的,可以歸為4組, 所以程式只需考慮途中標註了數字號的4條線路的控制燈的切換順序, 這四條路線的反方向的路線控制燈跟隨
黑馬程式設計師 交通燈管理系統的分析與理解
----------android培訓、java培訓、java學習型技術部落格、期待與您交流!---------- 交通燈管理系統 需求說明 非同步隨機生成按照各個路線行駛的車輛。 例如: 由南向而來去往北向的車輛----直行車輛 由西向而來去往南向的車輛----右轉車
黑馬程式設計師-7k面試題之交通燈管理系統
---------------------- ASP.Net+Unity開發、.Net培訓、期待與您交流! ---------------------- 面試題要求: 1.非同步隨機生成按照各種路線行駛的車輛。例如:由南向而來去往北向的車輛--------直行車輛由西向
黑馬程式設計師_7K面試題之交通燈系統
交通燈訊號模擬系統 一、概述 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下:(需求直接來源於老師的文件) ① 非同步隨機生成按照各個路線行駛的車輛。 例如:
黑馬程式設計師——7k面試題——交通燈管理系統
需求如下: 非同步隨機生成按照各個路線行駛的車輛。 訊號燈只考慮紅綠燈 要考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈控制 具體訊號燈控制邏輯與顯示生活中交通控制邏輯上相同 每量車共過路口為1秒 隨機生成車輛時間間隔及紅綠燈交換時間間隔自定,可設定 不用GUI,用log展現
黑馬程式設計師__7K面試題之交通燈管理系統
---------------------- Android開發、java培訓、期待與您交流! ---------------------- 一.需求 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下: 1.非同步隨機生成按照各個路線行駛的車輛。 例如:
黑馬程式設計師_面試題1(交通燈管理系統)
一.專案需求: 模擬實現十字路口的交通燈管理系統邏輯: 非同步隨機生成按照各個路線行駛的車輛。 例如: 由南向而來去往北向的車輛 ---- 直行車輛 由西向而來去往南向的車輛 ---- 右
黑馬程式設計師——面試題破解(交通燈管理系統)
------- android培訓、java培訓、期待與您交流! ---------- 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下: -非同步隨機生成按照各個路線行駛的車輛。 例如:由南向而來去往北向的車輛 ---- 直行車輛由西向而來去往南向的車輛 ---- 右轉
黑馬程式設計師------交通燈管理系統
-------android培訓、java培訓、期待與您交流! ---------- 模擬實現十字路
黑馬程式設計師 7K面試題破解:交通燈管理系統
---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ---------------------- 交通燈管理系統 使用者需求 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下: 非同步
黑馬程式設計師_7K面試題之交通燈
------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank"&g
黑馬程式設計師--java_交通系統程式碼思路分析
總共有12條路線,為了統一程式設計模型,可以假設每條路線都有一個紅綠燈對其進行控制,右轉彎的4條路線的控制燈可以假設稱為常綠狀態,另外,其他的8條線路是兩兩成對的,可以歸為4組,所以,程式只需考慮圖中標註了數字號的4條路線的控制燈的切換順序,這4條路線相反方向的路線的控制燈跟隨這4條路線切換,不必額外考慮。
黑馬程式設計師_7k面試題之銀行業務排程系統
----------- android培訓、java培訓、java學習型技術部落格、期待與您交流! --------- 一.專案需求: 模擬實現銀行業務排程系統邏輯,具體需求如下: 銀行內有6個業務視窗,1 - 4號視窗為普通視窗,5號視窗為快速
黑馬程式設計師_7K面試題之銀行排程系統
------- android培訓、java培訓、期待與您交流! ---------- 銀行業務排程系統 1. 模擬實現銀行業務排程系統邏輯,具體需求如下:銀行內有6個業務視窗,1 - 4號視窗為普通視窗,5號視窗為快速視窗,6號視窗為VIP視窗。有三種對應型別的客戶: