黑马程序员_交通灯改造版!


----------------------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培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值