黑马程序员技术交流社区

标题: 自己写的交通灯管理系统 求指教 [打印本页]

作者: 蒋映辉    时间: 2012-5-3 18:19
标题: 自己写的交通灯管理系统 求指教
就看了张老师的PPT  没有看视频,没有看代码  自己试着写了一个,可是发现一个问题 先上代码
  1. package com.tra.a;

  2. /**
  3. * 灯的开关
  4. * @author Administrator
  5. *
  6. */
  7. public class lamp {
  8.         /*
  9.          *因为整个系统只有一个灯控制,所以用S2N表示,ture表示s2n为绿灯
  10.          */
  11.         private boolean flag;
  12.        
  13.         public lamp(boolean flag) {
  14.                 // TODO Auto-generated constructor stub
  15.                 this.flag=flag;
  16.         }
  17.         public void changelamp(){
  18.                 if(this.flag) flag=false;
  19.                 else flag=true;
  20.         }
  21.         public boolean getlamp(){
  22.                 return this.flag;
  23.         }

  24. }
复制代码
  1. package com.tra.a;
  2. import java.util.Timer;
  3. import java.util.TimerTask;

  4. import com.tra.*;
  5. public class LampController {
  6.          static lamp l=new lamp(true);
  7.         public boolean checklamp(){
  8.                 return l.getlamp();
  9.         }
  10.          
  11.         public void changelamp(){
  12.                
  13.                 Timer timer =new Timer();
  14.                 timer.schedule(new TimerTask(){
  15.                         public void run(){
  16.                                 l.changelamp();
  17.                                 if(l.getlamp()==true) System.out.println("s2n绿灯亮");
  18.                                 else System.out.println("s2n绿灯不亮");
  19.                         }
  20.                 }, 1000,1000*10);
  21.                
  22.         }

  23. }
复制代码
  1. package com.tra.a;

  2. import java.util.LinkedList;
  3. import java.util.List;
  4. import java.util.Timer;
  5. import java.util.TimerTask;
  6. import java.util.concurrent.ThreadLocalRandom;


  7. public class Road {
  8.         String[] road={"s2e","e2n","n2w","w2s","s2n","n2s","s2w","n2e","w2e","e2w","w2s","w2n"};
  9.         private List<Integer>[] list = new List[12];
  10.         LampController lc=new LampController();
  11.        
  12.         public void init(){
  13.                 for(int i=0;i<12;i++){
  14.                         list[i]=new LinkedList<Integer>();
  15.                 }
  16.                 lc.changelamp();
  17.         }
  18.         public void onroad(){
  19.                 init();
  20.                 final Timer timer=new Timer();
  21.                 timer.schedule(new TimerTask(){
  22.                         int k=0;
  23.                         public void run(){
  24.                                 ThreadLocalRandom rand=ThreadLocalRandom.current();
  25.                        
  26.                                 int r=rand.nextInt(1,11);
  27.                                
  28.                                 int c=rand.nextInt(10000,99999);
  29.                                 list[r].add(c);
  30.                                 int s=list[r].size();
  31.                                 System.out.println("方向为 "+road[r]+"路上行来一辆号码为 "+c+"的车  "+"共"+s+"辆在排队");
  32.                                
  33.                                
  34.                                 k++;
  35.                                 //if(k==3) timer.cancel();
  36.                         }
  37.                        
  38.                 }, 0,1000);
  39.                
  40.                
  41.         }
  42.        
  43.         public void outroad(){
  44.                 Timer timer1=new Timer();
  45.                 timer1.schedule(new TimerTask(){
  46.                         public void run(){
  47.                                 boolean lamp=lc.checklamp();
  48.                                
  49.                                
  50.                                 for(int i=0;i<4;i++){
  51.                                        
  52.                                         int kk=list[i].size();
  53.                                         for(int j=0;j<kk-2;j++){
  54.                                                 System.out.println("车牌号为"+list[i].get(j)+"的车从"+road[i]+"的路上行驶过");
  55.                                                 list[i].remove(j);
  56.                                        
  57.                                         }
  58.                                 }
  59.                                
  60.                                   if(lamp){
  61.                                  
  62.                                         for(int i=3;i<7;i++){
  63.                                                
  64.                                                 int kk=list[i].size();
  65.                                                 for(int j=0;j<kk-2;j++){
  66.                                                         System.out.println("车牌号为"+list[i].get(j)+"的车从"+road[i]+"的路上行驶过");
  67.                                                         list[i].remove(j);
  68.                                                
  69.                                                 }
  70.                                         }
  71.                                        
  72.                                 }
  73.                                   else{
  74.                                           for(int i=7;i<12;i++){
  75.                                                        
  76.                                                         int kk=list[i].size();
  77.                                                         for(int j=0;j<kk-2;j++){
  78.                                                                 System.out.println("车牌号为"+list[i].get(j)+"的车从"+road[i]+"的路上行驶过");
  79.                                                                 list[i].remove(j);
  80.                                                        
  81.                                                         }
  82.                                                 }
  83.                                           
  84.                                   }
  85.                                
  86.                         }
  87.                 }, 10000,2000);
  88.                
  89.                
  90.                
  91.         }
  92.        

  93. }
复制代码
  1. package com.tra.a;
  2. import com.tra.*;
  3. public class Main {
  4.         public static void main(String[] args){
  5.         Road r=new Road();
  6.         r.onroad();
  7.         r.outroad();
  8.         }

  9. }
复制代码

作者: 蒋映辉    时间: 2012-5-3 18:20
问题在于,出车的代码 好像有问题  通过循环来实现好像不怎么对  但是想加入线程又已经加不进去了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2