我正在尝试制作一个程序来计算游戏中所需的分数水平,并且方程式在我的计算器上工作正常,但是当我尝试将其更改为使用java时则不行。 等式 5,000 / 3 *(4n ^ 3 - 3n ^ 2 - n)+ 1.25 * 1.8 ^(n - 60)例如49级你应该需要总分772240000点而计算器给出了这个答案,但我的java程序没有。这是我试过的代码。
for (int i = 0; i <= 100; i++) {
double score = (double) ((5000 / 3) * (Math.pow(4 * i, 3) - Math.pow(3 * i, 2) - i) + (1.25 * Math.pow(1.8, i - 60)));
System.out.println("Level " + i + " requires " + (long) score);
}
这似乎没有用,并且给了12513130000作为lvl 49的必需点。如果有人能够让它工作,你会解释我做错了什么。
答案 0 :(得分:4)
你的问题在Math.pow中 - 你每次都将你的索引值乘以标量。
4 * Math.pow(i, 3)
和
3 * Math.pow(i, 2)
应该修理它。
编辑:以及其他答案中提到的整数除法。
答案 1 :(得分:4)
你弄乱了Math.pow
来电,但你可以完全避免其中的一些:
double score = (double) ((5000 / 3) * (4 * i * i * i - 3 * i * i - i) + (1.25 * Math.pow(1.8, i - 60)));
以下是错误的:Math.pow(4 * i, 3)
实际上是(4i)^3
而不是 4(i^3)
。要做到后者,您需要以下内容:
4 * Math.pow(i, 3)
我不完全确定整数除法部分( 将其转换为double
),但您可能需要将5000 / 3
更改为5000.0 / 3
}。