我是面向对象编程的新手,并尝试构建类似于基本投票计数器的东西,该计数器应该采用 int 参数来表示两个候选者的选择并将选举结果打印到终端窗口。虽然(每位候选人的投票和投票总票数)
我正在寻找的方法也应该返回一个字符串,提供有关投票成功或失败的信息。“你的投票已被投票”“无效选择,没有投票"
我已经创建了一个类和构造函数,并且还实现了一些基本的get方法。
我想知道如何通过条件声明或使用某种先进的方法来实现这一目标。
在语法或更广泛的方法方面的任何帮助将不胜感激。
public class VoteCounter {
private String candidate1;
private String candidate2;
private int candidate1Votes;
private int candidate2Votes;
private boolean completed;
public VoteCounter(String candidate1, String candidate2) {
this.candidate1 = candidate1;
this.candidate2 = candidate2;
this.candidate1Votes = 0;
this.candidate2Votes = 0;
this.completed = false;
}
public VoteCounter() {
this("CANDIDATE 1", "CANDIDATE 2");
}
public String getCandidate1 () {
return this.candidate1;
}
public String getCandidate2 () {
return this.candidate2;
}
public Boolean getCompleted () {
return this.completed;
}
public void setCompleted (boolean completed) {
this.completed = completed;
}
}
答案 0 :(得分:1)
这样的东西?
private String vote(int choice)
{
if(choice == 1)
{
candidate1Votes++;
}
else if(choice == 2)
{
candidate2Votes++;
}
else
{
return "invalid choice, no vote cast";
}
return "your vote has been cast";
}
答案 1 :(得分:1)
我会以更一般的方式做到这一点,避免代码重复并允许轻松更改候选人数量。 所以让我们做一个类似于你的VoteCounter的类投票,但只针对一个候选人,有以下字段:
private String candidate; // init this in constructor
private int candidateVotes; // initially 0, so no need to init
并且使用投票()方法,如在其他答案中,但也没有candiadate,所以:
public void vote() {
candidateVotes++;
}
然后你可以制作VoteCounter类,它将接收任意数量的候选者,并将它们保存在数组或地图中。
Map<Integer, Vote> votes = new HashMap<>();
然后你选择创建投票方法:
public void vote(int choice) {
votes.get(choice).vote();
}
然后剩下的就是遍历你的投票地图并找到票数最多的那个。