2015-02-13 5 views
-1

Два вопроса: 1. Как создать метод getTotal(), который проходит через массив и подсчитывает общее количество голосов для всех кандидатов? 2. Где и как создать метод printResults(), который должен TRANSVERSE через массив и создает таблицу со столбцами для имени кандидата, сопровождаемые полученных голосов, а затем процент от общего числа голосовВычислить всего из массива

Candidate

public class Candidate 
{ 
    // instance variables 
    private int numVotes; 
    private String name; 

/** 
* Constructor for objects of class InventoryItem 
*/ 
    public Candidate(String n, int v) 
    { 
    // initialise instance variables 
    name = n; 
    numVotes = v; 
    } 
    public int votes() 
    { 
    return numVotes; 
    } 
    public void setVotes(int num) 
    { 
    numVotes = num; 
    } 
    public String getName() 
    { 
    return name; 
    } 
    public void setName(String n) 
    { 
    name = n; 
    }  
    public String toString() 
    { 
    return name + " received " + numVotes + " votes."; 
    } 
    public int getTotal(Candidate[] election) 
    { 

    } 

}

TestCandidate

public class TestCandidate 
{ 
    public static void printVotes(Candidate[] election) 
    { 
    for(int i = 0; i < election.length; i++) 
     System.out.println(election[i]); 
    } 

    public int getTotal(Candidate[] election) 
{ 
    int total = 0; 
    for(Candidate candidate : election) 
    { 
    total += candidate.numVotes; 
    } 
    return total; 
} 

public static void main(String[] args) 
{ 
    Candidate[] election = new Candidate[5]; 

    // create election 
    election[0] = new Candidate("John Smith", 5000); 
    election[1] = new Candidate("Mary Miller", 4000);   
    election[2] = new Candidate("Michael Duffy", 6000); 
    election[3] = new Candidate("Tim Robinson", 2500); 
    election[4] = new Candidate("Joe Ashtony", 1800);  

    System.out.println("  Results per candidate  "); 
    System.out.println("______________________________"); 
    System.out.println(); 
    printVotes(election); 

    System.out.println("The total of votes in election: " + getTotal()); 
} 

}

+1

я не думаю, что getTotal должен быть в Кандидатов класса – Kode

ответ

2
public int getTotal(Candidate[] election) 
{ 
    int total = 0; 
    for(Candidate candidate : election) { 
     total += candidate.votes(); 
    } 
    return total; 
} 

Этот метод и метод printResults() на мой взгляд, должен идти в какой-то класс-оболочку, которая собирает всех кандидатов. Например, как это:

class CandidatesList { 
    private Candidate[] candidates; 

    public CandidatesList(Candidate[] candidates) { 
     this.candidates = candidates; 
    } 

    public int getTotal() 
    { 
     int total = 0; 
     for(Candidate candidate : candidates) { 
      total += candidate.votes(); 
     } 
     return total; 
    } 

    public String toString() { 
     StringBuilder builder = new StringBuilder(); 
     int total = getTotal(); 
     for(Candidate candidate : candidates) { 
      builder.append(String.format("%20s | %5d | %.2f %%\n", 
       candidate.getName(), candidate.votes(), candidate.votes()/total); 
     } 
     return builder.toString(); 
    } 
} 

Вы можете использовать его как это:

CandidatesList list = new CandidatesList(election); 
System.out.print(list); 
System.out.format("Total votes: %d\n", list.getTotal()); 
+0

Great спасибо. Как я могу напечатать только общее количество голосов? System.out.println («Общее количество голосов» + «getTotal» (кандидат [])); – apsstudent

+0

не работает – apsstudent

+0

Он должен работать, за исключением имен методов, которые могут отличаться. Чтобы напечатать общее количество голосов, вам нужно сделать System.out.println (list.getTotal()); – LisuBB

Смежные вопросы