Find winner of local election using ArrayList


 

Find winner of local election using ArrayList

In this tutorial, you will learn how to find winner of local election using ArrayList.

In this tutorial, you will learn how to find winner of local election using ArrayList.

Find winner of local election using ArrayList

Here is an example that allow the user to enter the last names of five candidates in a local election and the votes received by each candidate. We have created a class Candidate which defines variables lname and vote to store the object of this class with data into ArrayList. The program output each candidate's name, the votes received by that candidate and the percentage of the total votes received by the candidate. The program will also display the winner of the election with no of votes received.

Example:

import java.util.*;
import java.text.*;
class Candidate{

public String lname;
public int vote;

public Candidate(String lname,int vote) {
super();
this.lname = lname;
this.vote=vote;
}

public String getLname() {
return lname;
}
public int getVote(){
return vote;
}
}
class VoteComparator implements Comparator{
public int compare(Object can1, Object can2){
int v1 = ((Candidate)can1).getVote(); 
int v2 = ((Candidate)can2).getVote();

if(v1 > v2)
return 1;
else if(v1 < v2)
return -1;
else
return 0; 
}
}

class VotesOfCandidates
{
public static void main(String[] args) 
{
int total=0;

List<Candidate> list = new ArrayList<Candidate>();
Scanner input=new Scanner(System.in);
for(int i=0;i<5;i++){
System.out.print("Enter Last Name: ");
String lname=input.next();

System.out.print("Enter no of votes: ");
int votes=input.nextInt();
list.add(new Candidate(lname,votes));
total+=votes;
}
DecimalFormat df=new DecimalFormat("##.##");
System.out.println("Total votes: "+total);
for(Candidate data: list){
int v=data.getVote();

double p=(double)v/total;
double per=p*100;
System.out.println(data.getLname()+"\t"+data.getVote()+"\t"+df.format(per));
}
int v=0;
Collections.sort(list,new VoteComparator());
for(Candidate data: list){
v=data.getVote();
} 
String can="";
System.out.println("Highest Vote is: "+v);
for(Candidate data: list){
if(v==data.getVote()){
can=data.getLname();
}
}
System.out.println(can+" won the election with "+v+" votes");
}
}

Output:

Enter Last Name: Hamelton
Enter no of votes: 2000
Enter Last Name: Gorge
Enter no of votes: 500
Enter Last Name: Messi
Enter no of votes: 2500
Enter Last Name: Lincoln
Enter no of votes: 200
Enter Last Name: Bush
Enter no of votes: 1000
Total votes: 6200
Hamelton        2000    32.26
Gorge   500     8.06
Messi   2500    40.32
Lincoln 200     3.23
Bush    1000    16.13
Highest Vote is: 2500
Messi won the election with 2500 votes

Ads