黑马程序员技术交流社区

标题: 用枚举模拟更真实的交通灯 [打印本页]

作者: 老衲玩IT    时间: 2013-8-27 08:11
标题: 用枚举模拟更真实的交通灯
  1. package com.itheima;
  2. /**
  3. *红灯下一个是黄灯,绿灯下一个是黄灯,如果黄灯前一个是红灯则下一个是绿灯,反之,前一个是绿灯则下一个是红灯
  4. * @author 老衲玩IT
  5. *
  6. */
  7. public class Test2 {
  8.         public static void main(String[] args) {
  9.                 TraLamp lamp=TraLamp.RED;
  10.                 while (true) {
  11.                         System.out.println(lamp+"...");
  12.                         try {
  13.                                 //根据交通灯的持续时间休眠,然后启动下一个灯
  14.                                 Thread.sleep(lamp.time*100);
  15.                                 lamp=lamp.nextLamp();
  16.                         } catch (InterruptedException e) {
  17.                                 // TODO Auto-generated catch block
  18.                                 e.printStackTrace();
  19.                         }
  20.                 }
  21.         }
  22.         //定义交通灯枚举
  23.         public enum TraLamp{
  24.                 RED(30) {
  25.                         @Override
  26.                         TraLamp nextLamp() {
  27.                                 preLamp=RED;
  28.                                 return YELLOW;
  29.                         }
  30.                 },GREEN(45) {
  31.                         @Override
  32.                         TraLamp nextLamp() {
  33.                                 preLamp=GREEN;
  34.                                 return YELLOW;
  35.                         }
  36.                 },
  37.                 YELLOW(5) {
  38.                         @Override
  39.                         TraLamp nextLamp() {
  40.                                 if (preLamp==RED) {
  41.                                         preLamp=YELLOW;
  42.                                         return GREEN;
  43.                                 }else {
  44.                                         preLamp=YELLOW;
  45.                                         return RED;
  46.                                 }
  47.                                
  48.                         }
  49.                 };       
  50.                 //交通灯的持续时间
  51.                 private int time;
  52.                 //上一次亮的灯
  53.                 static private TraLamp preLamp;
  54.                 private TraLamp(int time) {
  55.                         this.time=time;
  56.                 }
  57.                 abstract TraLamp nextLamp();
  58.         }
  59. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2