A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© l396262632 中级黑马   /  2013-8-24 01:58  /  1760 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 黄兴旺 于 2013-8-24 19:49 编辑

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);


这些灯 本人明白 ,关于灯里面的参数,本人想了半天也没想白!
到论坛 跪求 指点!!!!


评分

参与人数 1技术分 +1 收起 理由
EYE_SEE_YOU + 1

查看全部评分

6 个回复

正序浏览
清心玉质 发表于 2013-8-24 13:18
12个方向的灯,分析有四个方向常绿,剩余的八个灯都是两两相对,所以只要控制四个灯的逻辑即可,但是不要搞 ...

兄台 看完你的彻底悟了!上面 俩哥们 很专业,第一个语言很专业 就是没搞懂我要问的问题,第二个也很专业,关键的地方 没解释清, 看完你的!我彻底悟了
回复 使用道具 举报
forward 发表于 2013-8-24 09:12
S2N("N2S", "S2W", false), S2W("N2E", "E2W", false),E2W("W2E", "E2S", false),E2S("W2N", "S2N", false) ...

兄弟 给力 有点明白了!
回复 使用道具 举报
小冰块 发表于 2013-8-24 08:42
不明白是因为你没有了解枚举类,枚举类也是一种类,在枚举中刚开始的位置定义的枚举对象就是这个类的对象, ...

大神传参什么的明白 ! 我的意思是 逻辑!!参数里面代表的逻辑没理明白!
回复 使用道具 举报
12个方向的灯,分析有四个方向常绿,剩余的八个灯都是两两相对,所以只要控制四个灯的逻辑即可,但是不要搞相对方向的四个灯 。
当前灯和对面灯是同一状态,下一个灯是相反状态,这些状态是通过构造方法的参数进行传递的:
也就是lamp(oppsite相反灯,next下一灯,false灯的状态,可以在灯控制系统中设定状态):

案例里面试选取了南和东这四个方向:
S2N("N2S", "S2W", false),
S2W("N2E", "E2W", false),
E2W("W2E", "E2S", false),
E2S("W2N", "S2N", false),
下面这四个是相对的,这里确定上面四个方向也就是主方向才有相反灯,否则就是两个相反方向的灯来回执行light方法,陷入死循环
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);

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1 很给力!

查看全部评分

回复 使用道具 举报 1 0
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);


你要结合那个交通图来理解,首先参数的理解是 方向(“相反方向”,“下一个方向”,"此方向的等是否是路灯")

根据交通等图,理解灯的变灯的顺序后,这样理解,
我们知道,有四个方向的灯是常绿的,他们没有相反他们是: S2E(null, null, true), E2N(null, null, true), N2W(null, null, true), W2S(null, null, true);
                 其他的八个方向的灯两两互为相反的方向,所以我们操作其中四个方向的等就可以,其他的就会跟着变也就可以不用指定其反方向的,因为操作的四个方向的已经指定了,


    顺序:当前方向的灯变绿(亮)或者红(黑)了,那么反方向的灯也要跟着变,同时要指定下一个方向,当前要是亮,则下一个方向的则是黑,反过来一样操作,所以要指定下一个方向,并且要标识当前灯的状况,所以要指定最后一个参数。
希望你能理解,对你有帮助!

lamp.png (42.97 KB, 下载次数: 27)

lamp.png

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
不明白是因为你没有了解枚举类,枚举类也是一种类,在枚举中刚开始的位置定义的枚举对象就是这个类的对象,就像你写了一个class定义的类,然后在类的开始位置new了本类对象一样。new对象的时候后面跟着的是不是和类名相同的构造函数?有的构造函数是不是需要传参数?上面的三个参数就是创建对象时传给构造函数的参数,而枚举类实现对象的方法就是不需要new+构造函数,只需要写出对象名,然后紧跟着在括号里传入参数就可以。
在LAMP类中,除了上述你列出的代码外,紧跟在下面的还有这些:
  1. //向对方向的对象名
  2.         private String opposite;
  3.         //下一个方向的对象名
  4.         private String next;
  5.         //当前灯的红绿状态,绿灯为true,红灯为false
  6.         private boolean lighted;

  7.         /*枚举类构造函数,必须为私有*/       
  8.         private Lamp(String opposite,String next,boolean lighted){
  9.                 this.opposite = opposite;
  10.                 this.next = next;
  11.                 this.lighted = lighted;
  12.         }
复制代码
现在能看明白了吗?

评分

参与人数 1技术分 +1 收起 理由
特殊服务 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马