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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

我写的这个程序只需要输出:System.out.println(name()+"是绿灯");                          

过了10秒后:  System.out.println("绿灯从"+name()+"---------切换为"+next);      
我并没有定义loap的类 及不分析车子通过马路的过程。只需控制路灯的变化,其中这个name()该怎么设置

我下面是 :灯类,控制器,和主函数类。具体怎么实现呢。
       package jj;

public enum deng//采用枚举类,
{   //变量先定义后使用,所以存为字符串,(3)
        SN("NS","SW", false),SW("NE","EW",false),EW("WE","ES",false),ES("WN","SN",false),
        NS(null,null,false),NE(null,null,false),WE(null,null,false),WN(null,null,false),
        SE(null,null,true),EN(null,null,true),NW(null,null,true),WS(null,null,true);//直接写灯传不过代码,所以用字符串

        private deng(String duiying,String next,boolean lighted )//构造方法三个参数
       
                this.duiying=duiying;
                this.next = next;
                this.lighted = lighted;//等于传过来的变量
        }
        private deng(){
               
        }
       
       
       
        private boolean lighted;//当前灯是否为绿色。
        private String duiying;//与当前灯对应的方向。
        private String next;                       //(2)有对应的灯,就要有对应的变量值。可以在构造方法中给值。
                              //定义枚举的构造方法。转到(2)
        private String next;//当前等变红时下一个灯。
       
        public boolean lighted
        {
                return lighted;
        }
       
        /*
         * 某一个灯变绿时它对应方向的灯也要变成绿色。
         * */
       
        public void green()//定义一个亮绿灯方法
        {
                this.lighted = true;//这个灯为绿色,,
                if(duiying != null)//要是写成(1)duiying.green();会出现死循环
                {
                        deng.valueOf(duiying).green();//先定义后使用,(3)java的静态方法,给出名字就会返回枚举对象
                }
                System.out.println(name()+"是绿灯");
        }
       
/*
* 当某个灯变红时,对应方向的灯必须变红。并且下一个灯要变绿。
* **/       
    public deng red()//变红的方法
    {
            this.lighted=false;
            if (duiying != null)
              {
                         deng.valueOf(duiying).red();
              }
            deng nextdeng = null
            if (next != null )
          {
                    nextdeng = deng.valueOf(next);
                    System.out.println("绿灯从"+name()+"---------切换为"+next);
                         nextdeng.green();//  起初设置为:deng.valueOf(next).green()
          }
            return nextdeng;
           
    }
}
////-----------------------------------------------------
package jj;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;


public class kongzhiqi
{
        private deng dqdeng;//定义当前灯
        public kongzhiqi()
        {
                dqdeng = deng.SN;
                dqdeng.green();//设置当前灯为第一个灯,并且为绿灯。
                /*
                 * 做一个定时器设置多少时间切换下一个灯。
                 *
                 *
                 * **/
                ScheduledExecutorService timer =  Executors.newScheduledThreadPool(1);//特有的Executors类   长单词一个类名
                                    //定义了 1个线程,返回的值 定义一个定时器
                timer.scheduleAtFixedRate(           //有一个方法,四参数。
                                new Runnable(){
                                        public  void run(){
                                                System.out.println("来啊");
                                                dqdeng = dqdeng.red();
                                }
                                },
                                10,//过多长时间以后
                                10,//每隔多久
                                TimeUnit.SECONDS);//设置单位为秒
        }

}
///_____________________-----------------------------------
主函数类
package jj;


public class MainClass
{
        new kongzhiqi();

}
注意: 不考略车过马路的过程,就是没有张老师的模拟汽车上路和穿过路口的过程,没有Road类,
谢谢大家了。。。特别是这个枚举的name怎么用呢?

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马