案例描述:
某班级投票竞选班干部,班级学生人数为10人,每个学生只能投一票。
本任务要求,编程实现一个投票程序,每个学生只能投一次票,投票成功提示“感谢你的投票”,若重复投票,提示“请勿重复投票”。当投票总数达到10时或者主观结束投票时,同时统计投票学生人数和投票结果。
运行结果:
代码如下:
import java.util.*;
/**
* 2022/3/13
*/
public class TouPiao {
private static final int MAX_COUNT = 10; // 最大投票数
private static int count; // 投票数
public TouPiao() { // 创建无参构造方法
}
// 投票
public void Tou(Set<String> hs, String s) { // 传入HashSet集合与String字符串
if (hs.contains(s)) { // 判断集合中是否有此元素
System.out.println(s + "请勿重复投票");
} else {
count++; // 投票数+1
System.out.println(s + "感谢您的投票!");
}
}
// 投票结果
public void JieGuo(Set<String> a ,List<String> b) { // 传入两个集合
System.out.println("当前投票数为" + count); // 输出当前投票数
System.out.println("投票人:" + a + "\n意见为:" + b); // 输入投票人与投票人意见
}
public static void main(String[] args) {
TouPiao tp = new TouPiao(); // 创建对象
tp.tou(); // 通过对象调用投票方法
}
// 投票
public void tou(){
Set<String> tou = new HashSet<>(); // 创建Set集合用来存投票人姓名,因为Set集合不能存放相同的元素
List<String> yi = new ArrayList<>(); // 创建List集合存投票人意见
Scanner in = new Scanner(System.in);
TouPiao to = new TouPiao(); // 创建对象
boolean b = true; // 定义一个boolean变量
while (b) { // 当b为false时停止循环
System.out.println("请输入投票人姓名:");
String s = in.next();
System.out.println("请输入您的意见:");
String y = in.next();
to.Tou(tou, s); // 将输入的元素传给Tou方法
ChongFu(tou,s,yi,y); // 调用方法,如果投票人重复,则意见取消
tou.add(s); // 将元素添加到集合中
System.out.println("是否继续投票:(是 或 否)");
String sf = in.next(); // 输入是否继续投票
if (sf.equals("否") || count == MAX_COUNT){ // 如果输入的为否,或者投票数与最大投票数相等时,投票结束
System.out.println("投票结束!");
to.JieGuo(tou,yi); // 输出投票结果
b = false; // 停止循环
}
}
}
public void ChongFu(Set<String> st ,String name , List<String> yi , String y){
if (st.contains(name)){ // 如果投票人重复,则不添加意见
System.out.print("");
}else{
yi.add(y); // 不重复,添加意见
}
}
}