-2
private static int votePercentage() {
    int players = 0;
    for (int p = 0; h < PLAYERS; p++) {
        if (playersOnline[p] != null) {
            players++;
        }
    }
    int votes = voters.size();
    int avg = (votes / players);
    return (avg * 100);
}

投票:1 玩家:2 返回:0

投票:2 玩家:2 返回:100

问题

问题是,返回的 nummer 不是 int,而是 double,因为 1/2 = 0.5。因此它将始终返回 0,除非玩家的选票划分不是 double 而是 int。

基本上我想返回所有在线玩家中投票用户的百分比。

有解决方案吗?也许是一个java类或内置函数?

4

2 回答 2

5

您需要使用float(记得更改函数的返回类型!):

float avg = ((float)votes / players);

int只能存储整数;它不能存储小数。只有floatdouble(对于双精度)可以存储十进制数。

您还可以切换您的公式:

return ((votes * 100) / players);

请注意,这将向下舍入到下一个整数。

于 2013-09-04T12:20:24.440 回答
1

如果你真的想使用整数:

int avg = votes * 100 / players;
return avg;

但最好切换到floatdouble精度。

于 2013-09-04T12:21:19.147 回答