package chapter3.demo34; /** * Voter类代表一个投票者 */ public class Voter { // 最大投票人数 private static final int MAX_COUNT = 50; // 当前投票人数 private static int count = 0; // 存储所有投票者的数组 private static Voter[] voters = new Voter[MAX_COUNT]; // 投票者姓名 private String name; // 投票意见(true表示赞同,false表示反对) private boolean opinion; /** * 构造方法 * @param name 投票者姓名 */ public Voter(String name) { this.name = name; } /** * 投票方法 * @param opinion 投票意见 */ public void vote(boolean opinion) { // 检查是否达到最大投票人数 if (count >= MAX_COUNT) { System.out.println("投票已结束,已达到最大投票数。"); return; } // 检查是否重复投票 if (hasVoted(this.name)) { System.out.println(name + ",请勿重复投票。"); return; } // 记录投票意见 this.opinion = opinion; voters[count] = this; count++; System.out.println(name + ",感谢您的投票。"); } /** * 检查指定姓名的人是否已经投票 * @param name 要检查的姓名 * @return 如果已投票返回true,否则返回false */ private static boolean hasVoted(String name) { for (int i = 0; i < count; i++) { if (voters[i].name.equals(name)) { return true; } } return false; } /** * 打印投票结果 */ public static void printResults() { System.out.println("===========投票结果==========="); System.out.println("总投票数:" + count); int agreeCount = 0; for (int i = 0; i < count; i++) { System.out.println(voters[i].name + " 的意见:" + (voters[i].opinion ? "赞同" : "反对")); if (voters[i].opinion) { agreeCount++; } } System.out.println("赞同人数:" + agreeCount); System.out.println("反对人数:" + (count - agreeCount)); } /** * 获取投票者姓名 * @return 投票者姓名 */ public String getName() { return name; } // 静态初始化块,在类加载时执行 static { System.out.println("Voter类已加载,准备开始投票。"); } }