- package com.itheima;
- /**
- *红灯下一个是黄灯,绿灯下一个是黄灯,如果黄灯前一个是红灯则下一个是绿灯,反之,前一个是绿灯则下一个是红灯
- * @author 老衲玩IT
- *
- */
- public class Test2 {
- public static void main(String[] args) {
- TraLamp lamp=TraLamp.RED;
- while (true) {
- System.out.println(lamp+"...");
- try {
- //根据交通灯的持续时间休眠,然后启动下一个灯
- Thread.sleep(lamp.time*100);
- lamp=lamp.nextLamp();
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- //定义交通灯枚举
- public enum TraLamp{
- RED(30) {
- @Override
- TraLamp nextLamp() {
- preLamp=RED;
- return YELLOW;
- }
- },GREEN(45) {
- @Override
- TraLamp nextLamp() {
- preLamp=GREEN;
- return YELLOW;
- }
- },
- YELLOW(5) {
- @Override
- TraLamp nextLamp() {
- if (preLamp==RED) {
- preLamp=YELLOW;
- return GREEN;
- }else {
- preLamp=YELLOW;
- return RED;
- }
-
- }
- };
- //交通灯的持续时间
- private int time;
- //上一次亮的灯
- static private TraLamp preLamp;
- private TraLamp(int time) {
- this.time=time;
- }
- abstract TraLamp nextLamp();
- }
- }
复制代码 |