gpt4 book ai didi

java - 第二次赋值后重置静态变量

转载 作者:行者123 更新时间:2023-12-01 12:26:45 27 4
gpt4 key购买 nike

有 5 个静态变量:countAllGamescountWinCrossescountWinNoughtspercentageWinCrossespercentageWinNoughts。他们的结果显示在“统计”窗口中。有一个问题:前 3 个变量的计数器通常会按预期递增,但最后两个变量的结果将降至 0.0。这是代码:

if (countWinCrosses != 0) {
percentageWinCrosses = (countWinCrosses / countAllGames) * 100;
}
if (countWinNoughts != 0) {
percentageWinNoughts = (countWinNoughts / countAllGames) * 100;
}

这是方法的代码,其中一个在赢得 x 或 o 后执行:

public static void incrementWinCrosses() {
countWinCrosses++;
calculatePercentage();
}

public static void incrementWinNoughts() {
countWinNoughts++;
calculatePercentage();
}

还有一种方法可以增加所有玩过的游戏的数量。为什么变量 percentageCrossespercentageNoughts 在第二次调用 calculatePercentage() 后变为零?在第一次获胜后,其中一个变量变为等于 100%,但在第二场比赛(例如,赢得另一场比赛)后,两个变量都等于 0.0。前 3 个变量保留其值,每次增加 1。

最佳答案

静态变量没有任何问题。它的问题是你的变量是整数。如果用一个整数除以一个整数,就会得到一个整数。

因此,如果除 3/5,您将得到 0(整数),而不是 0.6。如果将其乘以 100,也会得到 0。

最简单的解决方案是先乘以 100,然后再除!所以:

myPercentValue = quantity1 * 100 / quantity2;

所以你会得到你想要的。在我的示例中,首先将 3 乘以 100,得到 300,然后除以 5,得到你想要的 60。

或者,您可以通过将变量声明为浮点或即时转换它们来使用浮点或 double 类型。这就是 @Gustek 的评论所建议的,它也可以是一个很好的解决方案。但实际上通常不需要这些复杂的转换。操作顺序的简单更改也将达到您想要的效果。

关于java - 第二次赋值后重置静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26274624/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com