我已经创建了这个程序/场景。
多个机器人被创建,然后从已创建的房间“逃出”。我还创建了一个计数器来计算机器人的移动次数,然后得出平均值。
我已经创建了这一切,但出于某种原因它只想返回 0。它没有抛出任何错误或类似的信息,所以我觉得我错过了一些明显的东西。
以下是代码的两部分:
public static double countingMoves;
.
.
.
public void move() {
super.move();
countingMoves++;
}
public int getRobotMoves() {
return countingMoves;
}
int Counter = EscapeBot.countingMoves/10;
最佳答案
int Counter = EscapeBot.countingMoves/10;
第一点
您正在除两个整数,如注释中所述,如果结果 < 0,则结果为 0。将这些类型之一转换为 double 型。这个过程称为Arithmetic Promotion ,其中表达式中的每个元素的精度都增加到精度最高的元素。例如:
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
出现在任何移动之前。通过将其放在代码末尾,您应该可以获得更准确的读数。
关于java - 计算对象执行的功能数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15960430/