Система голосования java

Я пытаюсь создать систему голосования на Java, в которой я ввожу имя кандидата и количество полученных им голосов, а затем хочу иметь возможность выводить наибольшее количество голосов вместе с именем этого кандидата. Пока что у меня есть основной метод, который собирает имена и количество голосов. Он помещает эту информацию в два массива. Один массив строк для имен и один массив целых чисел для количества голосов. Я могу вычислить наибольшее количество голосов, используя метод значения, который возвращает наибольшее число в массиве int. Затем я печатаю возвращаемое значение без каких-либо проблем, но я также хотел бы иметь возможность распечатать имя победителя из массива строк, поэтому я хотел знать, есть ли способ ссылаться на информацию из массива строк в int множество. Мне нужно использовать два отдельных массива, чтобы завершить программу. Это то, что у меня есть до сих пор

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;
    }
}

person aidan8181    schedule 03.12.2014    source источник


Ответы (5)


Индекс голосования и кандидата одинаковый, потому что вы добавили в один и тот же цикл. Самый высокий индекс голосов - это кандидат, получивший наибольшее количество голосов.

      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;
} 
person Benjamin    schedule 03.12.2014

Индекс наибольшего количества голосов совпадает с индексом имени кандидата, потому что вы добавили их в том же цикле, используя i. Так что получите индекс наибольшего количества голосов, и вы сможете получить имя соответствующего кандидата.

person Tom Jonckheere    schedule 03.12.2014

Следующее даст вам имя человека с наибольшим количеством голосов.

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

Имейте в виду, что это найдет первый экземпляр с наибольшим количеством голосов. т.е. если у двух человек было 50 голосов, что также является максимальным количеством голосов. Будет найдено первое имя, набравшее голоса.

В качестве альтернативы используйте объект с атрибутами имени и голосов. Гораздо лучший дизайн

person agreene    schedule 03.12.2014

int pointer; // a class variable

public static 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");
person vembutech    schedule 03.12.2014

person    schedule
comment
По сути, это тот же ответ, который дал Бенджамин выше. Только хуже, потому что завершающий '}' и начальный System.out.println не находятся в поле кода. - person Nelles; 07.12.2019
comment
Кроме того, пожалуйста, избегайте публикации ответов, содержащих только код. Если вы хотите помочь людям, предоставьте подробное объяснение вместе с вашим кодом. Таким образом, вы также можете улучшить ответ Бенджамина. - person Zabuzard; 07.12.2019