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 +
                '}';
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

earlytrain9653

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值