Java の入門からマスターまでの章の演習 - 第 13 章
演習 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() を使用して、赤の色の名前を取得できます。
演習 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("男生进入男厕所");
}
}
演習 3 チャネルのヒント
総合的な演習 3: チャネル プロンプト エントリ メソッドを持つチャネル クラスを作成します。顧客がチャネルに入ると、「こんにちは、滑りに注意してください」というプロンプトが表示されます。従業員がチャネルに入った場合、プロンプトコンテンツはありません。2 つのチャネル オブジェクトを作成してください。1 つはパブリック チャネル、もう 1 つは従業員チャネルです。お客様は従業員通路には立ち入りできません。
チャネルタイプと担当者のタイプは手動で設定できます。
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());
}
}
}
演習 4 権限の設定
総合演習 4: 権限設定 Tomorrow Academy の権限設定モジュールをシミュレートします。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());
}
}
}
}
演習 5 身体検査記録
総合的な演習 5: 身体検査記録 以下の手順に従って、身体検査記録のシミュレーションを完了します。
(1) 男性と女性の 2 つの列挙項目を含む性別の列挙を作成します。
(2) 3 つのジェネリック型 (A、B、C) を持つテスト クラスを作成します。これら 3 つのジェネリック型を使用して、それぞれ 3 つのメンバー変数を作成します。3 つのメンバー変数に値を代入できるコンストラクターを作成します。
(3) 日付を記録するために使用される最初のテスト クラス オブジェクト date を作成し、3 つのメンバー変数はそれぞれ年、月、日を表す整数値を記録し、日付オブジェクトのすべての属性値をコンソール。
(4) 文字情報を記録するために使用される 2 番目のテスト クラス オブジェクト tom と、名前、身長、性別をそれぞれ記録する 3 つのメンバー変数を作成します。名前は文字列、高さは整数、性別は (1) で指定された列挙型を使用します。トムオブジェクトのすべての属性値をコンソールに出力します。
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 +
'}';
}
}