`

黑马程序员_面试题_对交通灯管理系统总结

 
阅读更多

------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

1.         枚举类的特点;

枚举类不能在外面单独创建对象;

2.         对于系统中灯的设计,使用了枚举类;

设计情况;

每个枚举元素各表示一个方向的控制灯,每一个枚举类都是一个实例对象;

注明;4个灯依次亮;

S2N("N2S","S2W",false),S2W("N2E","E2W",false),

E2W("W2E","E2S",false),E2S("W2N","S2N",false),

下面元素表示与上面的元素的相反方向的灯,它们的“相反方向灯”和“下一个灯”应忽略不计!

成对出现的反方向的灯;

N2S(null,null,false),N2E(null,null,false),

W2E(null,null,false),W2N(null,null,false),

由南向东和由西向北等右拐弯的灯不受红绿灯的控制,所以,可以假想它们总是绿灯

S2E(null,null,true),E2N(null,null,true),

N2W(null,null,true),W2S(null,null,true);

创建一个构造函数,必须是私有的;参数的意义;opposite对应的灯;next下一个灯;lighted是否是绿色的;

private Lamp(String opposite,String next,boolean lighted){

                   this.opposite = opposite;

                   this.next = next;

                   this.lighted = lighted;

         }

3.         枚举类里面实现了两个方法;

其中Lamp.valueOf(opposite).light();返回的是一个Lamp灯的对象;就是一个枚举类的对象;下面是这两个方法的具体实现;

 

某个灯变绿时,它对应方向的灯也要变绿,灯变绿的方法;

public void light(){

this.lighted = true;

if(opposite != null){

将字符串变成对象;Lamp.valueOf(opposite)返回的是灯的对象;

Lamp.valueOf(opposite).light();

         }

System.out.println(name() + " lamp is green,下面总共应该有6个方向能看到汽车穿过!");

System.out.println(name() + " lamp is green,四个不受控制的一直是亮的,两个受控制的;");

}       

灯变红时,对应方向的灯也要变红,并且下一个方向的灯要变绿

@return 返回下一个要变绿的灯

public Lamp blackOut(){

this.lighted = false;

if(opposite != null){

Lamp.valueOf(opposite).blackOut();

         }

         Lamp nextLamp= null;

         if(next != null){

                   获取下一个方向上的灯的对象;

                            nextLamp = Lamp.valueOf(next);

         System.out.println("绿灯从" + name() + "-------->切换为" + next);                          

         nextLamp.light();

         }

         return nextLamp;

}

4.         对于灯的变化时间,我们是通过线程实现的;代码如下;

/*每隔10秒将当前绿灯变为红灯,并让下一个方向的灯变绿

*参数nThreads代表 -池中的线程数

                   ScheduledExecutorService timer =  Executors.newScheduledThreadPool(1);

scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)

        command - 要执行的任务

             initialDelay - 首次执行的延迟时间

                   period - 连续执行之间的周期

                   unit - initialDelay period 参数的时间单位 

                   timer.scheduleAtFixedRate(

                                     new Runnable(){

                                               public  void run(){

                                                        System.out.println("来啊");

//                                                     返回下一个变亮的灯;

                                                        currentLamp = currentLamp.blackOut();

                                     }

                                     },

                                     10,

                                     10,

                                     TimeUnit.SECONDS);

         }

5.         在路上不断的添加车辆;

//模拟车辆不断随机上路的过程

Executors这个是一个java线程并发库工具类。里面有大量的静态方法;是一个执行器类;

ExecutorService pool = Executors.newSingleThreadExecutor();             

pool.execute(new Runnable(){

public void run(){                                 

for(int i=1;i<1000;i++){

try {

Thread.sleep((new Random().nextInt(10) + 1) * 1000);

} catch (InterruptedException e) {

         e.printStackTrace();

}

//访问外部类中的成员变量;

vechicles.add(Road.this.name + "_" + i);

                                     }                                   

                            }

                           

                   });

6.         再用一个定时线程判断我们这个灯是不是亮着的;

//每隔一秒检查对应的灯是否为绿,是则放行一辆车              

newScheduledThreadPool是定时器;

ScheduledExecutorService timer =  Executors.newScheduledThreadPool(1);

                   timer.scheduleAtFixedRate(

                                     new Runnable(){

                                               public void run(){

                                                        if(vechicles.size()>0){

         boolean lighted = Lamp.valueOf(Road.this.name).isLighted();

if(lighted){

//我们取出的车,就是走过路的车;

         System.out.println(vechicles.remove(0) + " is traversing !");

                                                                 }

                                                        }

                                                       

                                               }

                                     },

                                     1,

                                     1,

                                     TimeUnit.SECONDS);

7.         对于交通灯管理系统的总结;

1、用到了枚举类;

2、用到了定时线程和不定时线程

3、用到了集合;

4Executors这个是一个java线程并发库工具类。里面有大量的静态方法;是一个执行器类;

 

 

分享到:
评论

相关推荐

    java_examine.rar_java 试题_程序员 面试_程序员面试_面试_面试题

    视频文件"java_examine.wmv"很可能是由经验丰富的讲师或行业专家提供的面试题解析,涵盖了Java基础、面向对象设计、多线程、集合框架、异常处理、JVM内存管理、IO流、网络编程、数据库连接、设计模式等多个方面。...

    01-7K月薪面试题破解之一_交通灯管理系统视频教程

    交通灯管理系统视频教程01-7K月薪面试题破解之一_交通灯管理系统视频教程01-7K月薪面试题破解之一_交通灯管理系统视频教程01-7K月薪面试题破解之一_交通灯管理系统视频教程01-7K月薪面试题破解之一_交通灯管理系统...

    Aspnet中级程序员_面试题

    【Aspnet中级程序员面试题】是针对有一定经验的Asp.net开发者设计的考核内容,主要涵盖C#、ASP.NET、SQL以及DBA等相关技术领域。这些知识点在实际开发和项目管理中至关重要,下面将对这些核心领域进行深入探讨。 **...

    《JAVA面试题》--JAVA 黑马程序员 面试宝典全学科.zip

    十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA技术体系,有志于做JAVA技能提升的朋友可与我联系,交个朋友 十余年JAVA从业经验,精通JAVA...

    黑马程序员_毕向东_Java基础源码.rar

    总结来说,"黑马程序员_毕向东_Java基础源码.rar"为初学者提供了一个深入学习Java编程的宝贵平台。通过学习和实践这些源代码,不仅可以巩固Java基础知识,还能培养良好的编程习惯和思维模式,为成为专业Java开发者...

    C#_面试题_总结_2

    C#_面试题_总结_2,希望对大家有所帮助。

    java程序员早期面试题汇总.zip

    java程序员早期面试题汇总 BAT经典面试题汇总.pdf Java常考面试题.pdf java面试题(题库全).doc java面试题-外企软件工程师面试题大全.rar 程序员面试题精选100题.pdf ... --------------------------------...

    黑马程序员java面试宝典 完整版PDF.rar

    《黑马程序员Java面试宝典》是一本...通过《黑马程序员Java面试宝典》的学习,你可以系统地复习和掌握这些知识点,提高自己的面试竞争力。书中的问题和解答将帮助你更好地理解Java编程的本质,提升在面试中的自信心。

    【黑马面试宝典】虐面试官神器之必备黑马程序员Android面试宝典.zip

    Android面试宝典包含两个宝典: 1【黑马项目宝典】虐面试官神器之必备黑马程序员项目宝典V1.1 内容包括:(1)电子商城(2)ListView系列(3)图像处理(4)动画效果(5)控件大全(6)新闻资讯(7)生活相关(8)...

    JAVAAndroid面试题讲解视频

    资源名称:JAVA Android面试题讲解视频资源目录:【】2012黑马程序员01_面试题【】2012黑马程序员02_面试题【】2012黑马程序员03_面试题【】2012黑马程序员04_面试题【】225ce844c6c817e9614d8f17ea70a640【】...

    张孝祥交通灯管理系统笔记

    张孝祥交通灯管理系统笔记 面试题视频教程笔记

    .net程序员面试题

    收集了很多师兄师姐出去就业后,收集回来的企业面试.net程序员的面试题啊!不容易啊!1-8份面试题,好好看啊!都是技术题,祝面试上自己喜欢的职业

    张孝祥面试题讲解补充系列_交通灯管理系统【海外之子】

    在《【海外之子】Java软件架构师之路精品视频教程_第一季_张孝祥面试题讲解补充系列_交通灯管理系统.pdf》中,我们预期会看到关于系统设计的详细讲解,包括但不限于以下几个方面: 1. **系统架构**:可能涉及微服务...

    bishiti.rar_C 面试题_c 笔试_笔试_面试_面试题

    "bishiti.rar_C 面试题_c 笔试_笔试_面试_面试题"这个压缩包包含了针对C语言的笔试和面试题目,旨在帮助求职者更好地准备技术面试,提高通过率。下面将详细讨论C语言的一些关键知识点。 1. **数据类型**:C语言提供...

    Java程序员就业面试题大全

    Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全Java程序员就业面试题大全

    黑马程序员java基础试题、笔记

    这些资源包括面试问题合集、整理的资料、Android面试题、学员入学面试总结、面试技巧、必须掌握的重点知识以及基础测试和入学考试题等,旨在全面覆盖Java基础知识和面试必备技能。 首先,面试问题合集和整理的资料...

    IT程序员高频面试题梳理码农高频面试题梳理

    IT程序员高频面试题梳理码农高频面试题梳理 P33 IT程序员高频面试题梳理码农 高频面试题梳理 IT程序员高频面试题梳理码农高频面试题梳理 IT程序员高频面试题 梳理码农高频面试题梳理 IT程序员高频面试题梳理码农高频...

    【黑马面试宝典】虐面试官神器之必备黑马程序员面试宝典V2.51

    "【黑马面试宝典】虐面试官神器之必备黑马程序员面试宝典V2.51"是为准备面试的程序员提供的一份宝贵的资源,它涵盖了JavaSE基础、面向对象、多态以及异常处理等多个核心知识点。本文将详细解析这些内容,帮助你更好...

Global site tag (gtag.js) - Google Analytics