----------------------android培训、java培训、期待与您交流! ----------------------
功能: 交通灯,黑马学仔都懂得
思路:
交通灯控制台LampContral{
控制各路Lamp的亮灭{
If(亮){
呼叫对应的Road.work()让车辆通行
}
else
}
}
此方法的特点在于,灯亮了就呼叫对应路上的车辆通行,不用车辆监视着灯的状态
代码粗糙,很多地方没有优化,大家凑合着看吧!
/*
* 功能:
* 控制交通灯,十秒钟变换一次
* */
package com.isoftstone.interview.traffic;
import java.util.Random;
public class LampContral {
//创建十二盏灯
private Lamp[] lamps = {
Lamp.N_E,Lamp.N_S,Lamp.E_N,Lamp.E_W,Lamp.
N_W,Lamp.E_S,
Lamp.S_W,Lamp.S_E,Lamp.W_S,Lamp.W_N,
Lamp.W_E,Lamp.S_N
};
LampContral(){
// 初始化灯 全部置为 红
for(Lamp lamp:lamps){
lamp.setLamp(false);
}
}
public void work()throws Exception{
while(true){
for(int i=0; i<4; i++){
lamps[i].setLamp(true);
}
//sleep
Thread.sleep(10000);
for(int i=0; i<4; i++){
lamps[i].setLamp(false);
}
for(int i=4;i<6; i++){
lamps[i].setLamp(true);
}
//sleep
Thread.sleep(10000);
for(int i=4;i<6; i++){
lamps[i].setLamp(false);
}
for(int i=6;i<10; i++){
lamps[i].setLamp(true);
}
//sleep
Thread.sleep(10000);
for(int i=6;i<10; i++){
lamps[i].setLamp(false);
}
for(int i=10;i<12; i++){
lamps[i].setLamp(true);
}
//sleep
Thread.sleep(10000);
for(int i=10;i<12; i++){
lamps[i].setLamp(false);
}
}
}
}
package com.isoftstone.interview.traffic;
public class Controlcentre {
/**
* @param args
*/
public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub
new LampContral().work();
}
}
//东南西北(North South East West)
package com.isoftstone.interview.traffic;
public enum Lamp {
N_E(new Road("东》》西路")),N_S(new Road("东》》南路")),E_N(new Road("西》》东路")),E_W(new Road("西》》北路")),
N_W(new Road("东》》南路")),E_S(new Road("西》》南路")),
S_W(new Road("南》》北路")),S_E(new Road("南》》西路")),W_S(new Road("北》》南路")),W_N(new Road("北》》东路")),
W_E(new Road("北》》西路")),S_N(new Road("西》》东路"));
private boolean islight=false;
private Road road;
//
Lamp(Road road){
this.road = road;
}
//判断灯是否亮着,
private boolean isLight(){
return islight;
}
public void setLamp(boolean islight){
this.islight = islight;
//如果灯亮 则呼叫本路车通过
if(islight){
callCar();
}
else{
System.out.println(this.road.name+"~~~~~~~~~~~~~~~~~~~禁止通行");
}
}
private void callCar(){
System.out.println("***"+this.road.name+"*******可以通车");
this.road.work();
}
}
package com.isoftstone.interview.traffic;
import java.util.*;
public class Road {
private static int num=0;
//名字
public String name=null;
//排队中的车辆
//private List<String> listCar = new ArrayList<String>();
private int listCar = 0;
Road(String name){
this.name=name;
// addCar();
new Thread(new Runnable(){
@Override
public void run() {
// 一到十秒随机加入一辆车
try {
Thread.sleep((new Random().nextInt(10)+1)*1000);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//listCar.add(Road.this.name+":");
listCar++;
System.out.println("添加一辆车>>>>>>>"+Road.this.name);
}
}).start();
}
//每秒通过一辆车
public void work(){
new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
//if(listCar.isEmpty()){
if(listCar==0){
//这路木有车
System.out.println(Road.this.name+"······························木有车");
}
else{
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
listCar--;
System.out.println("__________________________________"+Road.this.name+">>>>>>>>>>>>>>>>>通过一辆车");
}
}
}).start();
}
}
----------------------android培训、java培训、期待与您交流! ----------------------