黑马程序员—23—java面试:有关交通灯学习笔记和学习心得
来源:互联网 发布:python rsa 编辑:程序博客网 时间:2024/05/22 10:57
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
1. 交通灯管理系统逻辑:
异步随机生成按照各个路线行驶的车辆
信号灯忽略黄灯,只考虑红灯和绿灯。
应该考虑左转车辆控制信号灯,右转车辆不受信号灯控制
具体信号灯控制逻辑与现实逻辑相同:南北方向车辆与东西车辆交替放行,同方向等待车辆应先放直行车辆而后放左转车辆
每辆车通过路口时间为1秒
随机生成车辆时间间隔以及红绿灯交换时间间隔自定,可以设置
总共12条路线,为了统一编程模型,可以将右转的常绿状态,其他8条线路两两成对
,可以归纳4组,只需考虑标准数字号的4条路线的控制灯的切换顺序,反方向的路线
控制等跟随者4 条切换。
2. 面向对象的分析与设计
a) 每条线上都会出现多辆车,路线要随机增加新的车,在灯绿期间还要每秒减少一辆车
b) 每条路线每隔1秒都会检查控制本路线的灯是否为绿,一个灯有绿变红时,应将下一个方向的灯变绿
如:球从一根绳子的一段移动到另一端
public class XiaoQiuGun {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
}
}
class Rope
{
private Point start;
private Point end;
public Rope(Point start,Point end)
{
this.start = start;
this.end = end;
}
public Point nextPoint(Point currentPoint)
{}
}
class Ball
{
private Rope rope;
private Point currentPoint;
public Ball(Rope rope,starPoint)
{
this.rope = rope;
this.currentPoint = startPoint;
}
public void move()
{
currentPoint = rope.nextPoint(currentPoint);
System.out.println("小球移动了"+currentPoint);
}
}
总结:即谁有数据,谁就有操作数据的方法
12个灯用枚举,
public enum Lamp {
/*每个枚举元素各表示一个方向的控制灯*/
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);
private Lamp(String opposite,String next,boolean lighted){
this.opposite = opposite;
this.next = next;
this.lighted = lighted;
}
road类,随机产生车,用线程池;
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);
}
}
});
3. 学习心得体会
掌握面向对象编程,学习老师的编程思想,
学习老师的编
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
- 黑马程序员—23—java面试:有关交通灯学习笔记和学习心得
- 黑马程序员—24—java面试:有关银行调度学习笔记和学习心得体会
- 黑马程序员—8—Java基础:有关包的学习笔记和学习心得和体会
- 黑马程序员—7—Java基础:有关异常学习笔记和学习心得体会
- 黑马程序员—9—Java基础:有关多线程的学习笔记和学习心得体会
- 黑马程序员—10—java基础:有关多线程安全的学习笔记和学习心得体会
- 黑马程序员—11—java基础:有关线程通信的学习笔记和学习心得体会
- 黑马程序员—12—java基础:有关字符串的学习笔记和学习心得体会
- 黑马程序员—14—java基础:有关集合框架的学习笔记和学习心得体会
- 黑马程序员—15—java基础:有关泛型的学习笔记和学习心得体会
- 黑马程序员—18—java基础:有关IO流的学习笔记和学习心得体会
- 黑马程序员—19—java基础:有关File类的学习笔记和学习心得体会
- 黑马程序员—20—java基础:有关GUI图形用户界面学习笔记和学习心得体会
- 黑马程序员—21—java基础:有关网络编程的学习笔记和学习心得体会
- 黑马程序员—22—高新技术:有关高新技术的学习笔记和学习心得体会
- 黑马程序员 JAVA学习笔记——交通灯管理系统
- 黑马程序员 java学习笔记——交通灯管理系统
- 黑马程序员---java学习笔记之交通灯
- python 学习笔记13-----多线程编程
- MYSQL C API 入门教程
- Android菜鸟的成长笔记(11)——Android中的事件处理
- 20140216
- Java 默认修饰符 总结
- 黑马程序员—23—java面试:有关交通灯学习笔记和学习心得
- 简述UML之活动图
- Median of Two Sorted Arrays
- openjweb汽车配件网上商城及进销存系统介绍
- js制定取数值两位小数
- TOJ 2018 POJ 1523 SPF / 割点
- (intermediate) 圆与凸多边形相交 UVA 11177 - Fighting Against a Polygonal Monster
- NYOJ264 国王的魔镜
- bfs