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);
}
}