0

I'm trying to make a program that calculates the required score to level in a game and the equation works fine on my calculator but not when i try changing it to work with java. the equation is 5,000 / 3 * (4n^3 - 3n^2 - n) + 1.25 * 1.8^(n - 60) for example level 49 you should need to have a total score of 772240000 points and the calculator gives this answer but my java program doesn't. here is the code i tried.

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);
    }

This doesnt seem to work right and gives 12513130000 as the required points for lvl 49. If anyone can get it to work would you miind explaining what i did wrong.

4

2 に答える 2

4

問題は Math.pow 内にあります。毎回インデックス値にスカラーを掛けています。

4 * Math.pow(i, 3)

3 * Math.pow(i, 2)

それを修正する必要があります。

編集:そして、他の回答で言及されている整数除算。

于 2013-08-14T22:09:07.900 に答える
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)実際には is(4i)^3であり、not 4(i^3)です。後者を行うには、次のものが必要です。

4 * Math.pow(i, 3)

整数除算部分については完全にはわかりません(にキャストしています)、に変更するdouble必要がある場合があります。5000 / 35000.0 / 3

于 2013-08-14T22:10:09.610 に答える