黑馬程式設計師----7k面試題之交通燈管理系統
畫圖非常有助於分析和理解問題。
十字路總共有12條線路,為了統一程式設計模型,可以假設每條線路都有一個紅綠燈對其進行控制,
右拐的四條線路假設稱為常綠狀態,另外,其他的8條兩兩成對的,可以歸為4組,
所以程式只需考慮途中標註了數字號的4條線路的控制燈的切換順序,
這四條路線的反方向的路線控制燈跟隨這四條線路切換,不必另行考慮。
Road類的編寫
import java.util.*;import java.util.concurrent.*;public class Road { private List<String> vechicles = new ArrayList<String>();
Lamp類的編寫
分析見面向物件分析
/*** 每個Lamp元素代表一個方向上的燈,總共有12個方向,所以總格有12個Lamp元素。* @author DOOLMO**/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 boolean lighted; /*與燈同時為綠的對應方向*/ private String opposite; /*燈變紅時下一個變綠的燈*/ private String next; private Lamp(String opposite,boolean lighted,String next){ this.opposite =opposite; this.lighted =lighted; this.next = next; } public boolean isLighted(){ return lighted; } /** * 燈變綠時,它對應方向的燈也要變綠 */ public void light(){ this.lighted =true; if(opposite !=null){ Lamp.valueOf(opposite).light(); } System.out.println(name()+ " lamp is green,下面總共應該有6個方向能看到汽車穿過!"); } /** * 燈變紅時,對應方向的燈也要變紅,並且下一個方向的燈要變綠 * @return 下一個要變綠的燈 */ public Lamp blackOut(){ this.lighted = false; if(opposite != null){ Lamp.valueOf(opposite).blackOut(); } Lamp nextLamp=null; if(next != null){ nextLamp = Lamp.valueOf(next); nextLamp.light(); System.out.println("綠燈從" + name() + "-------->切換為" + next); } return nextLamp; } }
LampController類的編寫
由於整個系統中只能有一套交通燈控制系統,所以,LampController類應該設計成單例。
LampController構造方法中要設定第一個為綠的燈。
LampController物件的start方法中將當前燈變綠,然後啟動一個定時器,每隔10秒將當前燈變紅和將下一個燈變綠。
import java.util.concurrent.*;public class LampController { private Lamp currentLamp; public LampController() { // 剛開始讓由南向北的燈變綠; currentLamp = Lamp.S2N; currentLamp.light(); /* 每隔10秒將當前綠燈變為紅燈,並讓下一個方向的燈變綠 */ Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new Runnable() { public void run() { System.out.println("來啊"); currentLamp = currentLamp.blackOut(); } }, 10, 10, TimeUnit.SECONDS); }}
Main類的編寫
package cn.itheima.traffic;public class MainClass{ public static void main(String[] args) { String [] directions = new String[]{ "S2N","S2W","E2W","E2S","N2S","N2E","W2E","W2N","S2E","E2N","N2W","W2S" }; for(int i=0;i<directions.length;i++){ new Road(directions[i]); } new LampController(); } }
總結:
該面試題,主要考察對面向物件設計的熟練度,能使用多執行緒,列舉,還有就是對問題的分析和處理。
對能力的各方面進行的考察,java的基礎能力很重要。
------ android培訓、java培訓、期待與您交流! ----------
相關推薦
黑馬程式設計師----7k面試題之交通燈管理系統
畫圖非常有助於分析和理解問題。 十字路總共有12條線路,為了統一程式設計模型,可以假設每條線路都有一個紅綠燈對其進行控制, 右拐的四條線路假設稱為常綠狀態,另外,其他的8條兩兩成對的,可以歸為4組, 所以程式只需考慮途中標註了數字號的4條線路的控制燈的切換順序, 這四條路線的反方向的路線控制燈跟隨
黑馬程式設計師-7k面試題之交通燈管理系統
---------------------- ASP.Net+Unity開發、.Net培訓、期待與您交流! ---------------------- 面試題要求: 1.非同步隨機生成按照各種路線行駛的車輛。例如:由南向而來去往北向的車輛--------直行車輛由西向
黑馬程式設計師_7k面試題之交通燈管理系統
交通燈管理系統 1. 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下:非同步隨機生成按照各個路線行駛的車輛。例如:由南向而來去往北向的車輛---- 直行車輛由西向而來去往南向的車輛---- 右轉車輛由東向而來去往南向的車輛---- 左轉車輛 ...... 訊號燈忽略黃燈,只考
黑馬程式設計師__7K面試題之交通燈管理系統
---------------------- Android開發、java培訓、期待與您交流! ---------------------- 一.需求 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下: 1.非同步隨機生成按照各個路線行駛的車輛。 例如:
黑馬程式設計師-----7K面試題之交通燈系統
------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! ------- 現在每晚都加大力度去學習和加強自己的J
黑馬程式設計師_7k面試題(交通燈管理系統)學習筆記
總共有12條路線,為了統一程式設計模型,可以假設每條路線都有一個紅綠燈對其進行控制,右轉彎的4條路線的控制燈可以假設稱為常綠狀態,另外,其他的8條線路是兩兩成對的,可以歸為4組,所以,程式只需考慮圖中標註了數字號的4條路線的控制燈的切換順序,這4條路線相反方向的路線的控制燈跟隨這4條路線切換,不必額外考慮
黑馬程式設計師_7K面試題_交通燈管理系統
-面向物件分析設計經驗:誰用於資料,誰就對外提供操作這些資料的方法。 典型案例: 人在黑板上畫圓。 分析: 共有三個物件:人、黑板、圓。動作:畫 畫圓需要圓心和半徑,圓心和半徑都是圓的屬性上,圓擁有資料,所以圓物件提供畫圓的方法 圓在黑板上,黑板擁有
黑馬程式設計師_面試題1(交通燈管理系統)
一.專案需求: 模擬實現十字路口的交通燈管理系統邏輯: 非同步隨機生成按照各個路線行駛的車輛。 例如: 由南向而來去往北向的車輛 ---- 直行車輛 由西向而來去往南向的車輛 ---- 右
黑馬程式設計師_12_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
黑馬程式設計師_7K面試題之交通燈系統
交通燈訊號模擬系統 一、概述 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下:(需求直接來源於老師的文件) ① 非同步隨機生成按照各個路線行駛的車輛。 例如:
黑馬程式設計師之----------7K面試題之交通燈管理
------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------
黑馬程式設計師_7k面試題之銀行業務排程系統
----------- android培訓、java培訓、java學習型技術部落格、期待與您交流! --------- 一.專案需求: 模擬實現銀行業務排程系統邏輯,具體需求如下: 銀行內有6個業務視窗,1 - 4號視窗為普通視窗,5號視窗為快速
黑馬程式設計師---7k面試題(銀行業務排程系統)
號碼管理器 publicclassNumberManager{ privateint lastNumber =0;//客戶數 privateList queueNumbers =newArrayList();//視窗叫號數 publicsynchronizedInteger generateN
【黑馬程式設計師】7k面試題之交通燈
交通燈專案需求: 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下: 非同步隨機生成按照各個路線行駛的車輛。 例如: 由南向而來去往北向的車輛 ---- 直行車輛 由西向而來去往南向的車輛 ---- 右轉車輛
黑馬程式設計師--7k面試題交通燈
package com.itheima.traffic; import java.beans.VetoableChangeSupport; import java.util.ArrayList; import java.util.List; import java.util.Random; import j
黑馬程式設計師——7K面試題交通燈(My)
------- android培訓、java培訓、期待與您交流! ---------- 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下: 1、非同步隨機生成按照各個路線行駛的車輛。 例如: 由南向而來去往北向的車輛 ---- 直行車輛
黑馬程式設計師——7k面試題——交通燈管理系統
需求如下: 非同步隨機生成按照各個路線行駛的車輛。 訊號燈只考慮紅綠燈 要考慮左轉車輛控制訊號燈,右轉車輛不受訊號燈控制 具體訊號燈控制邏輯與顯示生活中交通控制邏輯上相同 每量車共過路口為1秒 隨機生成車輛時間間隔及紅綠燈交換時間間隔自定,可設定 不用GUI,用log展現
黑馬程式設計師——7k面試題---交通燈
------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! ------- 交通燈管理系統 一、功能需求如下: 1、
黑馬程式設計師 7K面試題破解:交通燈管理系統
---------------------- ASP.Net+Android+IOS開發、.Net培訓、期待與您交流! ---------------------- 交通燈管理系統 使用者需求 模擬實現十字路口的交通燈管理系統邏輯,具體需求如下: 非同步