举个例子
需求
假设现在有三种水果:苹果、香蕉、梨;现在随机选择一样水果,打印选择的结果信息。
思路
对于这种多分支结构,我们习惯性的使用编号的方式,将三种水果分别编号为1,2,3;通过编号来完成和水果的对应关系。(1) 使用常量的方式
我们定义常量通常是 public static final,以此来定义水果编号。编写主函数如下:
package main;
import java.util.Random;
public class ConstantMain {
public static final int APPLE = 1;
public static final int BANANA = 2;
public static final int PEAR = 3;
public static void main(String[] args) {
// 随机产生一个1-3范围内的水果编号
int type = new Random().nextInt(3) + 1;
// 水果编号对应相应的水果
switch (type) {
case APPLE:
// 选择的是苹果,做相应的事情
System.out.println("选择的是苹果,做相应的事情");
break;
case BANANA:
// 选择的是香蕉,做相应的事情
System.out.println("选择的是香蕉,做相应的事情");
break;
case PEAR:
// 选择的是梨,做相应的事情
System.out.println("选择的是梨,做相应的事情");
break;
}
}
}
(2) 使用枚举的方式
1.创建水果枚举类 FruitEnum
package enums;
import java.util.Arrays;
/**
* 水果枚举类
*
* @author Wwwwei
*
*/
public enum FruitEnum {
APPLE(1, "苹果"), BANANA(2, "香蕉"), PEAR(3, "梨");
private Integer type;// 水果编号
private String description;// 水果描述
public Integer getType() {
return type;
}
public String getDescription() {
return description;
}
private FruitEnum(Integer type, String description) {
this.type = type;
this.description = description;
}
/**
* 通过编号对应水果集合函数
*
* @param type
* 水果编号
* @return
*/
public static FruitEnum getInstance(Integer type) {
return Arrays.asList(values()).stream().filter(item -> type != null && item.getType().equals(type)).findFirst()
.orElse(null);
}
}
2.编写主函数
package main;
import java.util.Random;
import enums.FruitEnum;
public class Main {
public static void main(String[] args) {
// 随机产生一个1-3范围内的水果编号
Integer type = new Random().nextInt(3) + 1;
// 通过水果编号对应水果枚举集合
FruitEnum fruit = FruitEnum.getInstance(type);
// 打印选择结果
System.out.println("选择的水果编号:" + fruit.getType() + "\n选择的水果是:" + fruit.getDescription());
// 分支结构
switch (fruit) {
case APPLE:
// 选择的是苹果,做相应的事情
System.out.println("选择的是苹果,做相应的事情");
break;
case BANANA:
// 选择的是香蕉,做相应的事情
System.out.println("选择的是香蕉,做相应的事情");
break;
case PEAR:
// 选择的是梨,做相应的事情
System.out.println("选择的是梨,做相应的事情");
break;
}
}
}
来源:CSDN
作者:Wwwwei_csdn
链接:https://blog.csdn.net/Wwwwei_csdn/article/details/78181184