首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

枚举类型与交通信号灯

枚举类型与交通信号灯

耿祥义

如果希望某种变量取值范围是有限个字符序列,就可以定义枚举类型。

1.枚举类型

使关键字enum定义枚举类型。

例如:

pubcli enum TrafficLight {

red,yellow,green; //3个枚举常量

}

声明了一个枚举类型后,就可以用该枚举类型声明一个枚举变量,

例如:

TrafficLight light;

枚举变量light只能取值枚举类型中的常量,通过使用枚举名和“.”运算符获得枚举类型中的常量。

例如:

light = TrafficLight.green;

另外,枚举类型中也可以像类一样声明变量以及定义方法。

2.定义方法

在定义枚举类型时,也可以定义方法,方便程序更加灵活的使用枚举类型的变量。

以下定义的枚举类型中定义了next()方法,方便程序模拟十字交叉路口信号灯的交替变化。

--程序效果、视频讲解和源代码--

(1)程序效果如图:

(2)视频讲解

https://share.weiyun.com/5BuBpOg

Trafficlight.java

public enum Trafficlight { //定义枚举类型

green,yellow,red; //这是三个枚举常量

public Trafficlight next(){

Trafficlight light = green;

if(ordinal()==0){ //绿灯后是黄灯

light = yellow;

}

else if(ordinal()==1){//黄灯后是红灯

light = red;

}

else if(ordinal()==2){//红灯后是绿灯

light = green;

}

return light;

}

}

E.java

public class E {

public static void main(String args[]){

//东西方向信号灯:

Trafficlight lightEW = Trafficlight.green;

//南北方向信号灯:

Trafficlight lightSN = Trafficlight.red;

eastWest(lightEW,lightSN);

}

static void eastWest

(Trafficlight lightEW,Trafficlight lightSN){

if(lightEW == Trafficlight.green){

lightSN = Trafficlight.red;

}

else if(lightEW == Trafficlight.yellow){

lightSN = Trafficlight.red;

}

else if(lightEW == Trafficlight.red){

lightSN = Trafficlight.green;

}

try {

Thread.sleep(2000);

}

catch(Exception exp){}

if(lightSN == Trafficlight.green){

southNorth(lightEW,lightSN);

return;

}

lightEW = lightEW.next();

eastWest(lightEW,lightSN);

}

static void southNorth

(Trafficlight lightEW,Trafficlight lightSN){

if(lightSN == Trafficlight.green){

lightEW = Trafficlight.red;

}

else if(lightSN == Trafficlight.yellow){

lightEW = Trafficlight.red;

}

else if(lightSN == Trafficlight.red){

lightEW = Trafficlight.green;

}

try {

Thread.sleep(2000);

}

catch(Exception exp){}

if(lightEW == Trafficlight.green){

eastWest(lightEW,lightSN);

return;

}

lightSN = lightSN.next();

southNorth(lightEW,lightSN);

}

}

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200407A0SJND00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券