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 +
                '}';
    }
}

猜你喜欢

转载自blog.csdn.net/dedede001/article/details/130369970