黑马程序员技术交流社区

标题: 设计一个交通灯枚举类出现的问题(已解决) [打印本页]

作者: 杨震    时间: 2012-8-29 13:19
标题: 设计一个交通灯枚举类出现的问题(已解决)
本帖最后由 杨震 于 2012-8-30 11:25 编辑
复制代码
  1. package com.itheima;


  2. /*
  3. * 定义一个交通枚举,包含红灯,绿灯,黄灯,需要有获得下一个灯的方法.例如:红灯获取下一个灯是绿灯,绿灯获取下一个灯是黄灯
  4. * @author 杨震
  5. *
  6. */



  7. public class Test3 {

  8.         public static void main(String[] args) {
  9.                 Lamp red = Lamp.red;
  10.                 System.out.println(red.getNext());
  11.         }

  12. }

  13. enum Lamp {
  14.         red("green"), green("yellow"), yellow("red");
  15.         
  16.         
  17.         private Lamp next;
  18.         
  19.         private Lamp(String next)
  20.         {
  21.                 this.next = Lamp.valueOf(next);
  22.         }
  23.         
  24.         public Lamp getNext()
  25.         {
  26.                 return next;
  27.         }
  28. }






  29. <img border="0" alt="" src="http://bbs.itheima.com/forum.php?mod=image&aid=6842&size=300x300&key=a110f35716b06bb978a1499fd7564458&nocache=yes&type=fixnone" aid="attachimg_6842">
复制代码

捕获.PNG (15.02 KB, 下载次数: 25)

捕获.PNG

作者: 杨震    时间: 2012-8-29 13:24
编译报错,好像是说初始化异常,不知道怎么回事
作者: 曹操    时间: 2012-8-29 16:42

楼主可以这样,编写一个枚举类,一个运行类
1,首先定义一个枚举类,每个枚举类都有返回下一个灯的方法
  public enum trafficLamp{
             RED{

                        public trafficLamp nextLamp() {
                                return GREEN;
                        }
                     
             },
             GREEN{
                        public trafficLamp nextLamp() {
                                return YELLOW;
                        }
                     
             },
             YELLOW{

                        public trafficLamp nextLamp() {
                                return RED;
                        }
                     
             };
             
     public abstract trafficLamp nextLamp();
}

2,再通过运行类 whlie循环调用 来测试题目要求的结果
public class MainTest {
    public static void main(String[] args){
            trafficLamp trf = trafficLamp.RED;
            while(true){
                    trf = trf.nextLamp();
                    System.out.println(trf);
            }
    }
}
作者: 杨震    时间: 2012-8-30 11:22
  1. 21.enum Lamp {

  2. 22.        red("green"), green("yellow"), yellow("red");

  3. 23.        

  4. 24.        

  5. 25.        private String next;

  6. 26.        

  7. 27.        private Lamp(String next)

  8. 28.        {

  9. 29.                this.next = next;

  10. 30.        }

  11. 31.        

  12. 32.        public Lamp getNext()

  13. 33.        {

  14. 34.                return Lamp.valueOf(next);

  15. 35.        }

  16. 36.}
复制代码
谢谢楼上的,你的方法也很好,我知道自己错哪了,死循环,张老师提到过的,忘记了.

作者: 杨震    时间: 2012-8-30 11:23
以上是我的改进




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