黑马程序员——交通灯管理系统

---------------------- android培训java培训、期待与您交流! ----------------------今天上午把张老师的视频看了两遍,然后下午自己整理了一下思路,重新写了一遍。

感觉其实要实现一个项目的功能不难。最难的是思路,需求分析。以后得多在这上面花点时间。

下面上代码:

package com.tra.a;

/**
 * 灯的开关
 * @author Administrator
 *
 */
public class lamp {
	/*
	 *因为整个系统只有一个灯控制,所以用S2N表示,ture表示s2n为绿灯
	 */
	private boolean flag;
	
	public lamp(boolean flag) {
		// TODO Auto-generated constructor stub
		this.flag=flag;
	}
	public void changelamp(){
		if(this.flag) flag=false;
		else flag=true;
	}
	public boolean getlamp(){
		return this.flag;
	}

}

package com.tra.a;
import java.util.Timer;

import java.util.TimerTask;

import com.tra.*;
/*
 * 通过定时器来控制灯的开关,5秒变换一次
 */
public class LampController {
	 static lamp l=new lamp(true);
	public boolean checklamp(){
		return l.getlamp();
	}
	 
	public void changelamp(){
		
		Timer timer =new Timer();
		timer.schedule(new TimerTask(){
			public void run(){
				l.changelamp();
				if(l.getlamp()==true) System.out.println("s2n绿灯亮");
				else System.out.println("s2n绿灯不亮");
			}
		}, 1000,1000*10);
		
	}

}

package com.tra.a;

import java.util.LinkedList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.ThreadLocalRandom;


public class Road {
	String[] road={"s2e","e2n","n2w","w2s","s2n","n2s","s2w","n2e","w2e","e2w","w2s","w2n"};
	private List<Integer>[] list = new List[12];
	LampController lc=new LampController();
	
	public void init(){
		for(int i=0;i<12;i++){
			list[i]=new LinkedList<Integer>();
		}
		lc.changelamp();
	}
	/*
	 * 模拟车开到十字路口的场景
	 * 每一秒有一辆车
	 */
	public void onroad(){
		init();
		final Timer timer=new Timer();
		timer.schedule(new TimerTask(){
			int k=0;
			public void run(){
				ThreadLocalRandom rand=ThreadLocalRandom.current();
			
				int r=rand.nextInt(1,11);
				
				int c=rand.nextInt(10000,99999);
				list[r].add(c);
				int s=list[r].size();
				System.out.println("方向为 "+road[r]+"路上行来一辆号码为 "+c+"的车  "+"共"+s+"辆在排队");
				
				
				k++;
				//if(k==3) timer.cancel();
			}
			
		}, 0,1000);
		
		
	}
	
	public void outroad(){
		Timer timer1=new Timer();
		timer1.schedule(new TimerTask(){
			public void run(){
				boolean lamp=lc.checklamp();
				
				
				for(int i=0;i<4;i++){
					
					int kk=list[i].size();
					for(int j=0;j<kk-2;j++){
						System.out.println("车牌号为"+list[i].get(j)+"的车从"+road[i]+"的路上行驶过");
						list[i].remove(j);
					
					}
				}
				
				  if(lamp){
				 
					for(int i=3;i<7;i++){
						
						int kk=list[i].size();
						for(int j=0;j<kk-2;j++){
							System.out.println("车牌号为"+list[i].get(j)+"的车从"+road[i]+"的路上行驶过");
							list[i].remove(j);
						
						}
					}
					
				}
				  else{
					  for(int i=7;i<12;i++){
							
							int kk=list[i].size();
							for(int j=0;j<kk-2;j++){
								System.out.println("车牌号为"+list[i].get(j)+"的车从"+road[i]+"的路上行驶过");
								list[i].remove(j);
							
							}
						}
					  
				  }
				
			}
		}, 10000,2000);
		
		
		
	}
	

}

package com.tra.a;
import com.tra.*;
public class Main {
	public static void main(String[] args){
	Road r=new Road();
	r.onroad();
	r.outroad();
	}

}

跟张老师的对比,感觉好像代码多了好多,复杂了好多。还得继续研究 呵呵



---------------------- android培训java培训、期待与您交流! ----------------------详细请查看:http://edu.csdn.net/heima

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值