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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© l396262632 中级黑马   /  2013-8-24 01:58  /  1528 人查看  /  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 个回复

倒序浏览
不明白是因为你没有了解枚举类,枚举类也是一种类,在枚举中刚开始的位置定义的枚举对象就是这个类的对象,就像你写了一个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

查看全部评分

回复 使用道具 举报
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, 下载次数: 12)

lamp.png

评分

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

查看全部评分

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

大神传参什么的明白 ! 我的意思是 逻辑!!参数里面代表的逻辑没理明白!
回复 使用道具 举报
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 13:18
12个方向的灯,分析有四个方向常绿,剩余的八个灯都是两两相对,所以只要控制四个灯的逻辑即可,但是不要搞 ...

兄台 看完你的彻底悟了!上面 俩哥们 很专业,第一个语言很专业 就是没搞懂我要问的问题,第二个也很专业,关键的地方 没解释清, 看完你的!我彻底悟了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马