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);
}
Run Code Online (Sandbox Code Playgroud)
投票:1名玩家:2回归:0
投票:2名玩家:2回归:100
问题
问题是,返回的nubmer不是int,并且是1/2因为1/2 = 0.5.因此它总是会返回0,除非玩家的投票分数不是双倍而且是int.
基本上我想从所有在线玩家中返回投票用户的百分比.
这有解决方案吗?也许是java类或内置函数?
你需要使用float(记得改变函数的返回类型!):
float avg = ((float)votes / players);
Run Code Online (Sandbox Code Playgroud)
int只能存储整数; 它不能存储小数.只有float和double(双精度)可以存储十进制数.
你也可以切换你的公式:
return ((votes * 100) / players);
Run Code Online (Sandbox Code Playgroud)
请注意,这将向下舍入到下一个整数.