Java 如何改进此任务的代码
我是面向对象编程的新手,试图构造一个类似于基本投票计数器的东西,该计数器应该采用一个int参数,表示两个候选人的选择,并将选举结果打印到终端窗口。尽管(每位候选人的得票数和总投票数) 我正在寻找的方法还应返回一个字符串,该字符串提供投票成功与否的信息。“您的投票已被投票”“无效选择,无投票” 我创建了一个类和构造函数,还实现了一些基本的get方法 我想知道我应该如何实现这个目标,尽管是通过一个条件语句或使用某种高级方法 如果您在语法或更广泛的方法方面有任何帮助,我们将不胜感激Java 如何改进此任务的代码,java,Java,我是面向对象编程的新手,试图构造一个类似于基本投票计数器的东西,该计数器应该采用一个int参数,表示两个候选人的选择,并将选举结果打印到终端窗口。尽管(每位候选人的得票数和总投票数) 我正在寻找的方法还应返回一个字符串,该字符串提供投票成功与否的信息。“您的投票已被投票”“无效选择,无投票” 我创建了一个类和构造函数,还实现了一些基本的get方法 我想知道我应该如何实现这个目标,尽管是通过一个条件语句或使用某种高级方法 如果您在语法或更广泛的方法方面有任何帮助,我们将不胜感激 public cl
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;
}
}
像这样的
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";
}
我将以更一般的方式这样做,避免代码重复,并允许轻松更改候选数量。 因此,让我们进行一次类似于VoteCounter的班级投票,但只针对一名候选人,包括以下字段:
private String candidate; // init this in constructor
private int candidateVotes; // initially 0, so no need to init
与其他答案中的vote()方法类似,但也没有candiadate,因此:
public void vote() {
candidateVotes++;
}
然后您可以创建类VoteCounter,它将接受任意数量的候选对象,并将它们保存在数组或映射中
Map<Integer, Vote> votes = new HashMap<>();
然后,剩下的就是遍历投票地图,找到投票数最大的一个。你的标题不匹配,因为你不想改进一个方法,你需要任务的代码。另外,请删除注释
//或者可以实现为:
因为这个(“候选1”,“候选2”)
已经是一个干净而漂亮的实现。我投票将这个问题作为离题题来结束,因为这种问题应该在我道歉的时候提出。对这个网站来说是全新的。欢迎语法,我很抱歉如此粗鲁的欢迎。正如Tom所说,这是首选的方法,但要解释为什么:你想远离战争从尽可能重复相同的代码开始,如果您有任何代码重复,您可以剪切它,创建一个方法并粘贴到那里,然后调用该方法,如果您决定更新该代码,您只需要执行一次,而不是在您使用它的任何地方。简言之,更易于维护和概述。感谢指导。只需一个月我的软件学位。
public void vote(int choice) {
votes.get(choice).vote();
}