java - 用Java进行水平计算

标签 java calculator

我需要为我的一个 friend 计算一个等级系统。问题是我不知道该怎么做。他给了我一个终点,需要多少经验(31536000)才能达到最高等级(44) 级别应该随着你的等级而增加(例如递减级数或对数),我只是不知道如何向后甚至向前计算它。 我对 Java 没有那么丰富的经验,因为这对我来说已经很久了。

我需要从 1 到 44 级的每个级别所需的所有经验,并且您可以通过获得 31536000 经验来达到 44 级。 我已经测试了一些东西,但我真的不擅长,而且我知道这对我来说有点高。

public class level{
public static final double base_exp = 1; 
public static final double exp_increase_per_level = 0.40;
public static final int max_level = 44;

    public static int level (double exp){          
            int i = 1;
            double test_exp = base_exp; 
                while (i<max_level) {
                    if (test_exp > exp){
                        return i;
                    }
                    test_exp = test_exp + test_exp * exp_increase_per_level;
                    i++;
                }
            return max_level; 
    }

    public static double level_to_exp (int level) {
        if(level == 1)
            return base_exp;
        else {
            double prev = level_to_exp(level-1);
            return prev + prev * exp_increase_per_level;
        }
    }                

    public static double level_to_total_exp (int level) {
        if(level == 1)
            return base_exp;
        else {
            return level_to_total_exp(level-1) + level_to_exp(level-1) * (1 + exp_increase_per_level);
        }

    }

    public static void main(String []args){
        System.out.println("to level 1,"+level_to_exp(1)+"exp");
        System.out.println("to level 2,"+level_to_exp(2)+"exp");
        System.out.println("to level 44,"+level_to_exp(44)+"exp");

        System.out.println("Total exp to level 44" +level_to_total_exp(44)+" acuumulated");
    }                      

}

最佳答案

这只是基础数学。您的模型似乎是:

score = base^level

因此,要从分数中获取级别:

log(score) = log(base^level) = level * log(base)

level = log(score) / log(base)

要计算base,只需替换level=44score=whatever,然后重新排列。

关于java - 用Java进行水平计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60359954/

相关文章:

java - 我们如何使用mockito来获取对象

java - 在运算符(operator)签名之前跟踪数字

algorithm - 计算器(例如 Wolfram alpha)如何计算极大的阶乘?

java - 按索引从周期序列 0,1,2,3,2,1,0,1... 获取值的最简单方法是什么?

java - 从 AsyncTask 中的 SharedPreferences 获取字符串,java.lang.NullPointerException

javascript - 删除答案并重新开始 JS 计算器

C++简单运算(+,-,/,*)求值类

Javascript计算数量*价格

java - 如果项目从 Eclipse 运行,则 Instanceof 可以工作,但在导出时则不行

java - 如何使实体中的列不可读取