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

来源:互联网 发布:在线英语培训软件 编辑:程序博客网 时间:2024/05/24 15:37


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