Java从入门到精通章节练习题——第十三章
Exercise 1 彩虹枚举
综合练习1:彩虹枚举 编写一个彩虹枚举,枚举中有“红橙黄绿蓝靛紫”7种颜色。
package org.hj.chapter13;
public enum RainbowEnum {
RED("红色"),
ORANGE("橙色"),
YELLOW("黄色"),
GREEN("绿色"),
BLUE("蓝色"),
INDIGO("靛色"),
PURPLE("紫色");
private String colorName;
RainbowEnum(String colorName) {
this.colorName = colorName;
}
public String getColorName() {
return colorName;
}
}
使用这个枚举类型时,可以直接通过枚举值访问对应的颜色名称。例如,可以使用RainbowEnum.RED.getColorName()获取红色的颜色名称。
Exercise 2 性别枚举
综合练习2:性别枚举 设计一个厕所类,提供一个入口方法,要求男生只能进男厕所,女生只能进女厕所。
package org.hj.chapter13;
public enum GenderEnum {
//0代表女性,1代表男性
Female(0),
Male(1);
private Integer gender;
GenderEnum(Integer gender) {
this.gender = gender;
}
public Integer getGender() {
return gender;
}
public static void main(String[] args) {
int Female = 0;
int Male = 1;
Toilet.inlet(Female);
Toilet.inlet(Male);
}
}
class Toilet {
//进入方法
public static void inlet(Integer gender) {
if (GenderEnum.Female.getGender().equals(gender)) {
System.out.println("女生进入女厕所");
return;
}
System.out.println("男生进入男厕所");
}
}
Exercise 3 通道提示
综合练习3:通道提示 创建一个通道类,类中有一个入口方法,如果顾客进入通道则提示“顾客您好,小心地滑”。如果员工进入通道则没有任何提示内容。请创建两个通道对象,一个是公共通道,一个员工通道。顾客不能进入员工通道。
可手动设置通道类型和人员类型。
package org.hj.chapter13;
import java.util.Scanner;
public enum ChannelPromptEnum {
customer(0,"顾客您好,小心地滑"),
staff(1,""),
;
private final Integer identity;
private final String tip;
ChannelPromptEnum(Integer identity, String tip) {
this.identity = identity;
this.tip = tip;
}
public Integer getIdentity() {
return identity;
}
public String getTip() {
return tip;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入创建通道类型(0为公共通道,1为员工通道):");
int i = scanner.nextInt();
Thoroughfare thoroughfare = new Thoroughfare(i);
System.out.println("请输入身份(0为顾客,1为员工)");
int i1 = scanner.nextInt();
thoroughfare.inlet(i1);
}
}
class Thoroughfare {
//通道类型:0为公共通道;1为员工通道
private final Integer thoroughfareType;
public Thoroughfare(Integer thoroughfareType) {
this.thoroughfareType = thoroughfareType;
}
public Integer getThoroughfareType() {
return thoroughfareType;
}
//进入方法
public void inlet(Integer identity) {
//消费者,且通道类型为公共通道,消费者才能进入
if (getThoroughfareType().equals(1)) {
if (ChannelPromptEnum.customer.getIdentity().equals(identity)) {
System.out.println("此通道为员工通道,游客止步");
return;
}
System.out.println("员工进入员工通道");
return;
}
if (ChannelPromptEnum.customer.getIdentity().equals(identity)) {
System.out.println(ChannelPromptEnum.customer.getTip());
}
}
}
Exercise 4 权限设置
综合练习4:权限设置 模拟明日学院的权限设置模块,0表示游客,1表示注册用户,2表示VIP会员,3表示管理员,控制台输入0~3中的任意数字后,输出每种权限的“特权”。游客:观看部分视频、浏览所有课程、注册、登录;注册用户:免费观看所有视频、部分配套习题、收藏课程、实时提问、个人设置;VIP会员:免费观看所有视频、浏览所有习题及答案、源码下载、定期在线互动交流;管理员:后台所有管理模块、前台所有功能模块。
package org.hj.chapter13;
import java.util.Scanner;
public enum PermissionEnum {
tourist(0, "观看部分视频、浏览所有课程、注册、登录"),
users(1, "免费观看所有视频、部分配套习题、收藏课程、实时提问、个人设置"),
vip(2, "免费观看所有视频、浏览所有习题及答案、源码下载、定期在线互动交流"),
admin(3, "后台所有管理模块、前台所有功能模块"),
;
private final Integer perm;
private final String privilege;
PermissionEnum(Integer perm, String privilege) {
this.perm = perm;
this.privilege = privilege;
}
public Integer getPerm() {
return perm;
}
public String getPrivilege() {
return privilege;
}
public static void main(String[] args) {
boolean loop = true;
//可一直循环查询,输入4后退出程序
while (loop) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入0~3数字查看权限、输入4退出:");
int i = scanner.nextInt();
//利用枚举判断输入数字对应的权限
if (i == 4) {
loop = false;
}
if (PermissionEnum.tourist.getPerm().equals(i)) {
System.out.println(PermissionEnum.tourist.getPerm() + "对应权限为:" + PermissionEnum.tourist.getPrivilege());
}
if (PermissionEnum.users.getPerm().equals(i)) {
System.out.println(PermissionEnum.users.getPerm() + "对应权限为:" + PermissionEnum.users.getPrivilege());
}
if (PermissionEnum.vip.getPerm().equals(i)) {
System.out.println(PermissionEnum.vip.getPerm() + "对应权限为:" + PermissionEnum.vip.getPrivilege());
}
if (PermissionEnum.admin.getPerm().equals(i)) {
System.out.println(PermissionEnum.admin.getPerm() + "对应权限为:" + PermissionEnum.admin.getPrivilege());
}
}
}
}
Exercise 5 体检记录
综合练习5:体检记录 按照以下步骤完成体检记录模拟:
(1)创建一个性别枚举,有男性和女性两个枚举项。
(2)创建一个测试类,类有A、B、C 3个泛型。分别使用这3个泛型创建3个成员变量。编写可以为3个成员变量赋值的构造方法。
(3)创建第一个测试类对象date,该对象用于记录日期,3个成员变量分别记录表示年、月和日的整型数字,在控制台打印date对象的所有属性值。
(4)创建第二个测试类对象tom,该对象用于记录人物信息,3个成员变量分别记录姓名、身高和性别。姓名是字符串,身高是整数,性别使用(1)中提供的枚举。在控制台打印tom对象的所有属性值。
package org.hj.chapter13;
/**
* @description 体检记录
*/
public class MedicalRecordEnum {
public static void main(String[] args) {
//date
TestClass<Integer, Integer, Integer> date = new TestClass<>();
date.setA(2023);
date.setB(04);
date.setC(27);
System.out.println(date);
//tom
TestClass<String, Integer, String> tom = new TestClass<>();
tom.setA("tom");
tom.setB(170);
tom.setC(Gender.Male.getGender());
System.out.println(tom);
}
}
/**
* 性别枚举
*/
enum Gender {
Male("男性"),
Female("女性");
private final String gender;
Gender(String gender) {
this.gender = gender;
}
public String getGender() {
return gender;
}
}
class TestClass<A, B, C> {
private A a;
private B b;
private C c;
public void setA(A a) {
this.a = a;
}
public void setB(B b) {
this.b = b;
}
public void setC(C c) {
this.c = c;
}
@Override
public String toString() {
return "TestClass{" +
"a=" + a +
", b=" + b +
", c=" + c +
'}';
}
}