因此,我遇到了一个问题,即无法找到该百分比,而且我真的不知道为什么,所以我的任务是找到选举的候选人人数和选民人数,最后应显示出该百分比。例如,如果有3名候选人和6名选民,而第一名候选人获得3票,第二名获得2票,第三名获得1票,则应显示:50.00%,33.33%,16.67%。
下面是我的代码,它可以正确地投票,但是在百分比方面,它在所有情况下仅显示0.0%,希望你们能为我提供帮助。

import java.util.Scanner;

public class ElectionPercentage {
    public static void main(String[]args){
        //https://acm.timus.ru/problem.aspx?space=1&num=1263

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter how many candidates are : ");
        int candidates = sc.nextInt();
        int [] allCandidates = new int[candidates];
        int startingCandidate = 1;
        for(int i = 0; i < candidates;i++){
            allCandidates[i] = startingCandidate++; //now value of the first element will be 1 and so on.
        }

       //for testing System.out.println(Arrays.toString(allCandidates));

        System.out.println("enter the number of electors : ");
        int electors = sc.nextInt();
        int [] allVotes = new int[electors];

        for(int i =0;i < electors;i++){
            System.out.println("for which candidate has the elector voted for :");
            int vote = sc.nextInt();
            allVotes[i] = vote; //storing all electors in array
        }

        System.out.println();
        int countVotes = 0;
        double percentage;
        for(int i = 0;i<allCandidates.length;i++){
            for(int k = 0; k < allVotes.length;k++){
                if(allCandidates[i]==allVotes[k]){
                    countVotes++;
                }
            }
            System.out.println("Candidate "+allCandidates[i]+" has :  "+countVotes+" votes.");
            percentage = ((double)(countVotes/6)*100);
            System.out.println(percentage+"%");
            countVotes = 0;
        }
    }
}

最佳答案

countVotes是一个整数6也是一个整数。因此,代码中接近结尾的(countVotes/6)是整数除法。整数除法中的11/6为1。5/ 6为0。它通过舍去所有小数位进行舍入。那可能不是您想要的,尤其是因为您尝试在之后将其转换为两倍。

你在撒错东西。但是,您甚至根本不需要演员表。如果任何一方是双重的,整个事情就会变成双重分裂。因此,代替:percentage = ((double)(countVotes/6)*100);尝试percentage = 100.0 * countVotes / 6.0;

另外,大概6应该是一个变量,它可以计算总票数,不是吗?即electors,因此:percentage = 100.0 * countVotes / electors;

我们从100.0开始数学的事实意味着,它将一直是两倍的数学。

10-08 12:09