我写的这个程序只需要输出: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怎么用呢? |
|