Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何改进此任务的代码_Java - Fatal编程技术网

Java 如何改进此任务的代码

Java 如何改进此任务的代码,java,Java,我是面向对象编程的新手,试图构造一个类似于基本投票计数器的东西,该计数器应该采用一个int参数,表示两个候选人的选择,并将选举结果打印到终端窗口。尽管(每位候选人的得票数和总投票数) 我正在寻找的方法还应返回一个字符串,该字符串提供投票成功与否的信息。“您的投票已被投票”“无效选择,无投票” 我创建了一个类和构造函数,还实现了一些基本的get方法 我想知道我应该如何实现这个目标,尽管是通过一个条件语句或使用某种高级方法 如果您在语法或更广泛的方法方面有任何帮助,我们将不胜感激 public cl

我是面向对象编程的新手,试图构造一个类似于基本投票计数器的东西,该计数器应该采用一个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;
     }
}      
像这样的

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();
}