2014-12-03 333 views
0

我想在Java中創建一個投票系統,我輸入候選人的名字和他們收到的投票數,然後我希望能夠輸出最高的投票和該候選人的姓名。到目前爲止,我收集的是名單和選票數量的主要方法。它將這些信息放入兩個數組中。一個字符串數組用於名稱,一個int數組用於投票數。我能夠通過使用返回int數組中最大數字的值方法計算出最高的投票數。然後我打印返回的值沒有任何問題,但我也想能夠從字符串數組中打印出贏家的名字,所以我想知道是否有任何方法可以將字符串數組中的信息引用到int陣列。我需要使用兩個單獨的數組才能完成程序。這是我迄今爲止投票系統java

import java.util.Scanner; 
public class VotingCounter1 
{ 
    public static void main(String [] args){ 
     Scanner userInput = new Scanner(System.in); 
     final int SIZE = 6; 
     int[] votes = new int[SIZE]; 
     String[] names = new String[SIZE]; 

     for (int i = 0; i < names.length && i < votes.length; i++){ 
      System.out.print("Enter candidate's name: "); 
      names[i] = userInput.next(); 
      System.out.print("Enter number of votes: "); 
      votes[i] = userInput.nextInt(); 
     } 

     System.out.println("And the Winner is: " + highest(votes)); 
    } 
    public static int highest(int[] votes){ 
     int high = votes[0]; 

     for (int i = 1; i < votes.length; i++){ 
      if (votes[i] > high){ 
       high = votes[i]; 
      } 
     } 
     return high; 
    } 
} 

回答

0

投票和候選人的索引是相同的,因爲你添加到相同的循環。最高投票指數是得票最高的候選人

 System.out.println("And the Winner is: " + highest(votes,names)); 


    public static String highest(int[] votes,String names[]){ 
    int high = votes[0]; 
    String s= names[0]; 
    for (int i = 1; i < votes.length; i++){ 
     if (votes[i] > high){ 
      high = votes[i]; 
      s=names[I]; 
     } 
    } 
    s=s+""+high; 
    return s; 
} 
0

選票數最高的指數是相同的候選人姓名索引,因爲您在使用i相同的環路中加入它們。因此,得到最高票數的索引,你可以得到相應候選人的名字。

0

以下將給你最高票數的人的名字。

names[Arrays.asList(names).indexOf(highest(votes))]; 

請記住,這將找到最高(票)的第一個實例。即。如果兩個人都有50票,這也是最高票數。帶有選票的名字將被找到。

或者,使用名稱和投票屬性的對象。更好的設計

0
int pointer; // a class variable 

公共靜態INT最高(INT []票){ INT高=票[0];

for (int i = 1; i < votes.length; i++){ 
     if (votes[i] > high){ 
      high = votes[i]; 
      pointer = i; 
     } 
    } 
    return high; 

現在,您可以在打印時使用指針名稱數組的索引。

System.out.println("And the Winner is: " +names[pointer]+"with"+ highest(votes)+"votes");