0

我已经创建了这个程序/场景。

创建多个机器人,然后从已创建的房间“逃跑”。我还创建了一个计数器来计算机器人的动作,然后形成一个平均值。

我已经创建了这一切,它只是出于某种原因只想返回 0。它没有抛出任何错误或类似的东西,所以我觉得我错过了一些明显的东西。

以下是代码的两个部分:

public static double countingMoves;

.
.
.

public void move() {
super.move();
countingMoves++;
}

public int getRobotMoves() {
return countingMoves;
}




int Counter = EscapeBot.countingMoves/10;
4

1 回答 1

5
int Counter = EscapeBot.countingMoves/10;

第一点

您将两个整数相除,如评论中所述,如果结果 < 0,则结​​果为 0。将其中一种类型转换为双精度数。此过程称为算术提升,其中表达式中的每个元素都将其精度增加到具有最高精度的元素。例如:

int / int = int
double / double = double
int / double = double
int + String = String

对于您的代码:

double Counter = EscapeBox.countingMoves/10.0;

第二点

Java 命名约定规定,不是常量的变量或方法的第一个单词必须以小写字母开头。

Counter -> counter

第三点,希望是最后一点

如果您查看计算平均值的位置,0.0实际上是正确的。您在开始时计算平均值,然后再进行任何移动。

double Counter = EscapeBot.countingMoves/10.0;
// When computed at the start, this equals:
// double Counter = EscapeBot.countingMoves(0)/10.0 = 0/10.0 = 0.0

出现在任何动作之前。通过将其放在代码的末尾,您应该获得更准确的读数。

于 2013-04-11T23:16:13.540 回答