java习题——集合类、枚举类型与泛型——英文字母输出,掷骰子,彩虹枚举,体检记录模拟

1、使用数组和ArrayList类,先输出A→Z,再输出z→a

import java.util.*;

public class CharacterPrinter {
	public static void main(String[] args) {
		char[] upper_array = new char[26];
		char[] lower_array = new char[26];
		List<Character> upper_list = new ArrayList<Character>();
		List<Character> lower_list = new ArrayList<Character>();  // 新建数组和列表
		
		int counter_1 = 0;
		int counter_2 = 0;  // 预设计数器
		
		for(char i = 65; i <= 90; i++) {  // 65-90是大写字母A-Z的ASCII码
			upper_array[counter_1] = i;
			upper_list.add(i);
			counter_1++;  // 循环写入数据
		}
		
		for(char i = 97; i <= 122; i++) {  // 97-122是小写字母a-zASCII码
			lower_array[counter_2] = i;
			lower_list.add(i);
			counter_2++;
		}
		
		System.out.print("数组打印A-Z:");
		for(int i = 0; i < 26; i++) {
			System.out.print(upper_array[i] + " ");
		}
		System.out.print("\n");
		
		System.out.print("数组打印z-a:");
		for(int i = 25; i >= 0; i--) {
			System.out.print(lower_array[i] + " ");
		}
		System.out.print("\n");
		
		System.out.print("ArrayList打印A-Z:");
		for(int i = 0; i < 26; i++) {
			System.out.print(upper_list.get(i) + " ");
		}
		System.out.print("\n");
		
		System.out.print("ArrayList打印z-a:");
		for(int i = 25; i >= 0; i--) {
			System.out.print(lower_list.get(i) + " ");
		}
		System.out.print("\n");  // 一堆打印, 打印\n是为了换行输出,直接println("")也行
	}
}

2、张三,李四、王五、赵六玩掷骰子游戏,比点数大小(别问我为什么题干这么短,问就是后面都是答题提示,太长了我懒得输入)

import java.util.*;

public class Dice {
	public static void main(String[] args) {
		out: while (true) {  // 标记最外层循环为out
			List<Integer> num = new ArrayList<Integer>();  // 这是存点数的
			for (int i = 1; i <= 6; i++) {
				num.add(i);  // 循环写入1-6的点数
			}
			
			String[] name = {"张三", "李四", "王五", "赵六"};  // 存储姓名的数组
			int[] test = new int[4];  // 中介用的数组
			
			Map<String, Integer> dicemap = new HashMap<>();  // 字典
			
			for (int i = 0; i < 4; i++) {
				Random random = new Random();
				int number = random.nextInt(6);  // 随机数生成
				String key = name[i];
				int value = num.get(number);  // 利用随机数随机取数(多少有点duck不必的感觉,但谁叫他要求了,我还是得这么做)
				dicemap.put(key, value);  // 写入字典
				test[i] = value;  // 顺便备份出一份数据来方便查重和排序
			}
			
			for (int i = 0; i < 4; i++) {
				for (int j = 0; j < 4; j++) {
					if (test[i] == test[j] && i != j) {
						System.out.print("存在差别");  // 双循查重
						continue out;  // 跳过之前做了标记的此次外层循环
					}
					else {
						continue;
					}
				}
			}
			Arrays.sort(test);  // 排序
			int max = test[3];  // 找出最大的那个
			
			for (String a: dicemap.keySet()) {
				if (max == dicemap.get(a)) {  // 按照最大的匹配循环查找
					System.out.print("点数最大的人的姓名是:" + a);  // 查找并进行打印
					break out;
				}
				else {
					continue;
				}
			}
		}
	}
}

3、编写一个彩虹枚举,枚举中有“红橙黄绿青蓝紫”7种颜色

// 无可注释

enum Color {
	red, orange, yellow, green, blue, cyan, purple
}


public class RainBow {
	public static void main(String[] args) {
		System.out.print("The colors of rainbow are: ");
		Color rainbow[] = Color.values();
		for (int i = 0; i <=6; i++) {
			if (i != 6) {
				System.out.print(rainbow[i] + ", ");
			} else {
				System.out.print(rainbow[i] + ".");
			}
		}
	}
}

4、

(1)创建一个性别枚举,有男性和女性两个枚举项。

(2)创建一个测试类,类有A、B、C 3个泛型。分别使用这3个泛型创建3个成员变量。编写可以为3个成员变量赋值的构造方法。

(3)创建第一个测试类对象date,该对象用于记录日期,3个成员变量分别记录表示年、月和日的整型数字,在控制台打印date对象的所有属性值。

(4)创建第二个测试类对象tom,该对象用于记录人物信息,3个成员变量分别记录姓名、身高和性别。姓名是字符串,身高是整数,性别使用(1)中提供的枚举。在控制台打印tom对象的所有属性值。
 

// 无可注释

enum Gender {
	male, female
}

public class PhysicalExamination<A, B, C> {
	private A a_data;
	private B b_data;
	private C c_data;
	
	public PhysicalExamination(A a_data, B b_data, C c_data) {
		this.a_data = a_data;
		this.b_data = b_data;
		this.c_data = c_data;
	}
	
	public String toString() {
		return "a_data is " + a_data + ", b_data is " + b_data + ", c_data is " + c_data;
	}
	
	public static void main(String[] args) {
		PhysicalExamination<Integer, Integer, Integer> date = new PhysicalExamination<>(2003, 8, 14);
		System.out.println(date);
		
		PhysicalExamination<String, Integer, Gender> tom = new PhysicalExamination<>("Liu,ZX", 175, Gender.male);
		System.out.println(tom);
	}
}

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

山河之书Liu_Zixin

不要打赏

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

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

打赏作者

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

抵扣说明:

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

余额充值