Enumeration
是一种跟字符串很像的数据类型
- Declaration (使用类的方式声明)
// 其中所有的值必须是 defined names 不能是 numerical values
public enum favouriteGames{CSGO,LOL,TAITAN_FALLS,COD};
- How to use?
- decalare 的位置在main method之外
- 只要涉及enum类型中的 defined name必须使用“.”来引用
- 可以使用System.out.println 来输出;可以比较是否相等
favouriteGames games;
games = favouriteGmaes.CSGO;
import java.util.Scanner;
/* Manual controller for traffic light */
public class TrafficLightControl {
// enum type declaration occurs outside the main method
public enum LightState {RED, GREEN, YELLOW, DONE}
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
LightState lightVal;
String userCmd;
lightVal = LightState.RED;
userCmd = "-";
System.out.println("User commands: n (next), r (red), q (quit).\n");
lightVal = LightState.RED;
while (lightVal != LightState.DONE) {
if (lightVal == LightState.GREEN) {
System.out.print("Green light ");
userCmd = scnr.next();
if (userCmd.equals("n")) { // Next
lightVal = LightState.YELLOW;
}
}
else if (lightVal == LightState.YELLOW) {
System.out.print("Yellow light ");
userCmd = scnr.next();
if (userCmd.equals("n")) { // Next
lightVal = LightState.RED;
}
}
else if (lightVal == LightState.RED) {
System.out.print("Red light ");
userCmd = scnr.next();
if (userCmd.equals("n")) { // Next
lightVal = LightState.GREEN;
}
}
if (userCmd.equals("r")) { // Force immediate red
lightVal = LightState.RED;
}
else if (userCmd.equals("q")) { // Quit
lightVal = LightState.DONE;
}
}
System.out.println("Quit program.");
}
}