只用Java的Enum 20行代码实现课堂点到 ?

本文原创首发CSDN,本文链接https://blog.csdn.net/qq_41464123/article/details/107633044 ,作者博客https://blog.csdn.net/qq_41464123 ,转载请带上本链接,谢谢配合。


目录

一、枚举是什么?

二、枚举的基本用法 —— 浙江地级市

三、枚举实际应用 —— 课堂点到


一、枚举是什么?

 

Java是从JDK1.5开始,引入了这种新的类型——枚举(enum)。

其实枚举不是Java所特有的功能,在C++等其他编程语言中也一样存在。

但和其余编程语言相比,Java的枚举——enum更加强大,因为Java提供的枚举是完整的类,也就是说,我们可以随意添加成员变量和成员方法。

当然,Java的enum枚举也支持相互比较,也可以被序列化。

说了那么多,让我们先来了解一下Java的枚举。

 


二、枚举的基本用法 —— 浙江地级市列表

 

枚举是指由一组固定的常量组成的类型,使用enum关键字定义。比如下面浙江的地级城市:

enum ZheJiangCity{
	杭州,宁波,温州,绍兴,湖州,嘉兴,金华,舟山,衢州,丽水;
}

一般来说,一个省内的地级市是固定的,不会发生太多变化。如果要在程序中经常使用到浙江的地级市,我们就可以定义Java的枚举类。

比如下面这样,可以直接调用枚举类的固定值

public static void main(String[] args) {
	System.out.println(ZheJiangCity.宁波);
}

注意:在枚举类中如果存在其他成员方法,则枚举变量列表最后要加上分号;

不过个人推荐不管有没有其他方法,都加上,这也是编程中一个良好的习惯。


刚刚说了,Java的枚举类中,可以添加成员方法,比如我在这重写一个取长度方法。

enum ZheJiangCity{
	杭州,宁波,温州,绍兴,湖州,嘉兴,金华,舟山,衢州,丽水;
	public static int length() {
		return ZheJiangCity.values().length;
	}
}

接着,就可以在测试方法中测试length()方法。

public static void main(String[] args) {
	System.out.println(ZheJiangCity.length());
}

总的来说,在Java编程中要善于使用枚举类,个人认为枚举类可以给我们带来三点好处

1. 可以让代码更容易维护,类似前端的正则表达式,保证变量都是正确、合法的值。

2. 方便Java编程时,输入指定数据。因为只要输入一个点,就可以弹出所有的值。

3. 使得代码更加直观,允许使用描述性的名称表示数据,使用更加方便。


本文原创首发CSDN,本文链接https://blog.csdn.net/qq_41464123/article/details/107633044 ,作者博客https://blog.csdn.net/qq_41464123 ,转载请带上本链接,谢谢配合。


三、枚举实际应用 —— 课堂点到

 

接下来是一个实际的应用,那就是课堂随机点到的小游戏,利用Java的枚举类,20行代码即可实现

首先创建一个枚举类——User,放入点到的姓名范围

enum User {
	张三,李四,王五,赵六,ZWZ_1号,
	ZWZ_2号,ZWZ_3号,ZWZ_4号,ZWZ_5号,ZWZ_6号
	,ZWZ_7号,ZWZ_8号,ZWZ_9号,ZWZ_10号,ZWZ_11号
	,ZWZ_12号,ZWZ_13号,ZWZ_14号,ZWZ_15号,ZWZ_16号;
}

随机数需要Java的随机函数:Math.random() 来实现,该方法返回一个 0 ~ 1 的随机小数

我们将随机小数乘于枚举类变量长度,就可以得到0~len的一个随机浮点数

接着再使用Math.floor()方法向下取整,再强制转换为int整型,就实现了随机下标的功能

int randomNum = (int)Math.floor(Math.random()*User.values().length);

接着再从枚举类中遍历,找到第n个元素,返回即可

public static User choose() {
	int randomNum = (int)Math.floor(Math.random()*User.values().length);
	for(User l : User.values()) {
		randomNum --;
		if(randomNum < 0) {
			return l;
		}
	}
	return null;
}

完整的代码:

package cn.ypc;

public class EnumTest2 {
	public static void main(String[] args) {
		int time = 10;
		for(int i = 0 ; i < time ; i ++) {
			System.out.println("The " + i + " time " + User.choose() + " is lucky");
		}
	}
}
enum User {
	张三,李四,王五,赵六,ZWZ_1号,
	ZWZ_2号,ZWZ_3号,ZWZ_4号,ZWZ_5号,ZWZ_6号
	,ZWZ_7号,ZWZ_8号,ZWZ_9号,ZWZ_10号,ZWZ_11号
	,ZWZ_12号,ZWZ_13号,ZWZ_14号,ZWZ_15号,ZWZ_16号;
	
	public static User choose() {
		int randomNum = (int)Math.floor(Math.random()*User.values().length);
		for(User l : User.values()) {
			randomNum --;
			if(randomNum < 0) {
				return l;
			}
		}
		return null;
	}
}

运行几次程序发现,课堂点名结果是随机生成的

当然 Java 的 Enum 应用远不止这个,还有很多等着我们去学习。

总之使用枚举类,可以容易的限制程序只采用指定的某一个有效值,确保信息正确有效

原文地址:https://www.cnblogs.com/yyzwz/p/13393205.html