某班级投票竞选班干部,班级学生人数为100人,每个学生只能投一票。
本任务要求,编程实现一个投票程序,每个学生只能投一次票,投票成功提示“感谢你的投票”,若重复投票,提示“请勿重复投票”。当投票总数达到100时或者主观结束投票时,同时统计投票学生人数和投票结果。
1.通过任务描述可知,需要定义一个参与投票的学生类Voter类,它具有姓名,最大投票数,当前投票总数,和投票意见。
2.因为所有参与投票的学生都会改变同一个数据,即投票次数,因此把它定义成静态变量:private static int count;
3.另外,为了防止学生重复投票,必须保存参与投票的学生信息,可采用一个集合来存放已经投票的学生对象。
private static Set<Voter> voters = new HashSet<Voter>();
4.最后编写测试Voter类的投票和打印投票结果功能。
package topiao;
import java.util.HashSet;
import java.util.Set;
public class Voter {
private static final int Max_COUNT = 100;
private static int count;
private static Set<Voter> voters = new HashSet<Voter>();
private String name;
private String answer;
public Voter(String name){
this.name = name;
}
public void voterFor(String answer){
if(count == Max_COUNT){
System.out.println("投票结束");
return ;
}
if(voters.contains(this)){
System.out.println("您已投票,请勿重复");
}else{
this.answer = answer;
count ++;
voters.add(this);
System.out.println("投票成功");
}
}
public static void printVoterResult() {
System.out.println("投票总数为:"+count);
System.out.println("参与投票的学生和结果:");
for (Voter voter:voters){
System.out.println(voter.name+"投票的意见为:"+voter.answer);
}
}
}
package topiao;
public class Voter01 {
public static void main(String[] args) {
Voter v1 = new Voter("小白兔");
Voter v2 = new Voter("白兔");
Voter v3 = new Voter("兔");
v1.voterFor("同意");
v2.voterFor("不同意");
v3.voterFor("好同意");
Voter.printVoterResult();
}
}