2013-05-04 2 views
0

У меня этот класс и в методе printVotes мне приходилось выполнять оператор if каждый раз, чтобы печатать каждый голос. Есть ли способ объединить оба оператора if. Могу ли я напечатать все имена кандидатов и количество голосов, которое они получили в одно и то же время?Как скомпилировать оператор if в цикле

public class TestCandidate { 
    public static void main(String[] args) 
    { 
     Canidate[] canidate = new Canidate[5]; 

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

     printVotes(canidate) ;  
    } 

    public static void printVotes(Canidate [] List) 
    { 
     double max; 
     int index; 

     if (List.length != 0) 
     { 

      index = 0; 
      for (int i = 1; i < List.length; i++) 
      { 

      } 

      System.out.println(List[index]); 
     } 

     if (List.length != 0) 
     { 
      index = 1; 
      for (int i = 1; i < List.length; i++) 
      { 

      } 
      System.out.println(List[index]); 
      return; 
     } 
    } 
} 
+5

Предпочтительно не использовать буквы переменных в Java. Тем более, что существует так много типов «Список». – squiguy

+1

Почему бы не пропустить через 'printVotes (canidate)' 5 раз, используя цикл for? Каждый раз при отправке другого значения индекса массива. Вместо того, чтобы перебирать ваш метод несколько раз. – Tdorno

+1

В чем разница между двумя потоками управления? –

ответ

1

Если вы передаете в List<Candidate> candidates; и предполагая, что каждый кандидат имеет List<Integer> Votes:

List<Integer> votes= new ArrayList<Integer>() ; 
    for(Candidate c:candidates) 
    { 
     votes.add(c.GetVote()) ; 
    } 
    for(Integer v:votes) 
    { 
     System.out.println(v); 
    } 
+0

Есть ли способ, которым я мог бы пройти через имена и голоса, а затем распечатать их? – user2337902

+0

@ user2337902 Зачем вам печатать их потом? –

+0

Я имел в виду, что после того, как я пройду через все это, я должен вернуть это число. @Lonenebula – user2337902

0

Вы можете переопределить toString() метода, Candidate класса, например, так:

public String toString() { 
    return "Candidate Name: " + this.name + "\nVotes: " + this.votes; 
} 

Тогда ваш printVotes метод будет выглядеть примерно так:

public static void printVotes(Candidate[] list) { 
    for(Candidate c : list) { 
     System.out.println(c); 
    } 
} 

Как упоминалось выше, избегайте использования заглавных букв в именах переменных, особенно в тех случаях, когда используются такие слова, как Список. Список является типом коллекции и может быть легко запутан.

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