再会!作为培训,我正在编写一个计票程序。
这是代码:
public class Kata_7_3 {
public static String getWinner(final List<String> listOfBallots) {
//Your code
int votesGiven = listOfBallots.size();// Кол-во проголосовавших
String winnerName = "";
ArrayList<String> uniqueNamesOfCandidates = candidates(listOfBallots); // Получение списка уникальных имен
HashMap<String,Integer> resultOfVote = new HashMap<>();// Мапа с кандидатами и голосами
for(String name : uniqueNamesOfCandidates){
int votes = 0;
for (int j = 0;j< listOfBallots.size();j++){
if(Objects.equals(name, listOfBallots.get(j))){
votes++;
}
resultOfVote.put(name,votes);
}
}
int [] valVotes = new int[resultOfVote.size()];
for (HashMap.Entry<String,Integer> entry : resultOfVote.entrySet()){
Arrays.fill(valVotes, entry.getValue());
}
System.out.println(Arrays.toString(valVotes));
return winnerName;
}
/**
* Метод получает на вход параметр List ballots, и возвращает список уникальных кандидатов
* @param ballots Бюллетени. Список, где указаны кандидаты. Сколько раз указан кандидат в списке,
* столько за него отдано голосов
* @return возвращает ArrayList кандидатов
*/
public static ArrayList<String> candidates (List<String>ballots){
Set<String> candidates = new HashSet<>(ballots);
ArrayList<String> listOfNamesOfCandidates = new ArrayList<>(candidates);
return listOfNamesOfCandidates;
}
}
这段代码的逻辑是:
在输入中,我们得到以下格式的列表:“A”、“A”、“A”、“B”、“B”、“B”、“Safa”、“C”、“C”、“C” ","C","C","C"
然后在候选人方法中,我们得到一个候选人列表
之后,我们创建一个包含名称和票数的地图
然后我必须计算谁赢了。我想在一个数组中显示值,并且已经在数组中进行了计算,然后通过搜索键值,显示获胜者。
这就是我在这里尝试做的事情:
int [] valVotes = new int[resultOfVote.size()];
for (HashMap.Entry<String,Integer> entry : resultOfVote.entrySet()){
Arrays.fill(valVotes, entry.getValue());
}
System.out.println(Arrays.toString(valVotes));
return winnerName;
但是,只有一个,即地图中最后一个候选人的投票数被添加到数组中。结果是这样的: [1, 1, 1, 1]
告诉我如何用地图中的值填充数组,以便值对应于每个候选者。类型:[4, 7, 1, 5]