我正在学习Java,我的老师已经通过了一个练习,有4名候选人参加选举,问题是检查哪个候选人是赢家,是否会有第二轮(显示候选人出席和相应的投票)。问题是它不能使用数组来完成,这意味着我必须只使用' if' s。 你怎么做最快的,记住2和4候选人都有可能进入第二轮?
到目前为止我的进展:
if(voteLula > voteCiro && voteLula > voteCriancinha && voteLula > voteRose){
winnervotes = votosLula;
winner = "Lulalelé";
}else if(voteCiro > voteLula && voteCiro > voteCriancinha && voteCiro > voteRose){
winnervotes = votosCiro;
winner = "Cirogrude";
}else if(voteCriancinha > voteLula && voteCriancinha > voteCiro && voteCriancinha > voteRose){
winnervotes = votosCriancinha;
winner = "Criancinha";
}else if(voteRose > voteLula && voteRose > voteCiro && voteRose > voteCriancinha){
winnervotes= votosRose;
winner = "Roseaçaí";
}
我想过使用"> ="在这些循环中,但会大大增加代码行。
提前谢谢。
答案 0 :(得分:3)
首先创建一个类来存储名称和投票:
public class Person {
private String name;
private int votes;
public Person(String name, int votes) {
this.name = name;
this.votes = votes;
}
//add getter and setter
}
现在是最大的:
public static Person max(Person a, Person b, Person c, Person d) {
Person max = a;
if (b.getVotes() > max.getVotes())
max = b;
if (c.getVotes() > max.getVotes())
max = c;
if (d.getVotes() > max.getVotes())
max = d;
return max;
}
您的代码将以这种方式更具可读性和可理解性。
我现在让你思考第二轮,检查是否有多个最大值并不难。
答案 1 :(得分:1)
当此代码位于某个方法中时,只需<&gt; 返回&#34;然后&#34;块。通过这样做,您无需在整个地方使用其他。
如果此代码不是自己的方法,那么创建一个!
鉴于您的约束,可能无法减少if语句的数量。但正如所说 - 你可以简化结构。