需求:
等级计算,一级区域,0-30分,2级区域,30-70,3级区域,70-120,4级区域,120-180
每增加一级,是上一级减上上级+10+上一级的值
已知条件:积分
求:用个方法动态计算出等级区域,然后通过积分,求正确的等级
例:积分为72分,则等级为3级
rank=(Math.sqrt(625+20*score)-25)/10;//rank为等级 double型,score为积分。其他不变,如果rank不是整数,则加1
double rank = 0;
rank = (Math.Sqrt(625 + 20 * Score) - 25) / 10;//rank为等级 double型,score为积分。其他不变,如果rank不是整数,则加一
if (rank > (int)rank)
{
Grade = (int)rank + 1;
}
Grade = (int)rank;
下边这个可以动态计算出等级区域,满足需求中的等级计算条件
sum = (5 * n) * (n + 5)
java方式
public static void main(String[] args) {
System.out.println(getGrade(166499));
System.out.println(getScore(180));
}
/**
* 根据分数计算等级,参考 getScore(int grade)
* @param score
* @return
*
* @since 2009-5-10 上午10:24:05
*/
public static int getGrade(int score) {
return (int)(Math.sqrt(6.25 + score / 5.0) - 2.5);
}
/**
* 计算每个等级的最低分:
* 1 级 -- 30 分
* 2 级 -- 70 分,与 1 级相差 40 分
* 3 级 -- 120 分,与 2 级相差 50 分
* 4 级 -- 180 分,与 3 级相差 60 分
* ……
* @param grade
* @return
*
* @since 2009-5-10 上午10:22:35
*/
public static int getScore(int grade) {
return (5 * grade) * (grade + 5);
}
黑色头发:http://heisetoufa.iteye.com/