0

我真的很讨厌在我的应用程序中使用 if's,我认为这是一个非常简单的模式,所以有没有办法将下面的代码变成 1 行公式,只是为了在我的应用程序中提高可读性?

这是代码:

int duration = 0;
    if (score < 100) {
        duration = 2;
    } else if (score >= 100 && score < 200) {
        duration = 3;
    } else if (score >= 200 && score < 300) {
        duration = 4;
    } else if (score >= 300 && score < 400) {
        duration = 5;
    } else if (score >= 400 && score < 500) {
        duration = 6;
    } else if (score >= 500) {
        duration = 7;
    } 

我自己并不擅长数学,也不擅长为此提出公式,所以任何人都可以帮助我获得一个公式来实现上面代码的功能吗?

谢谢!

4

3 回答 3

1

看起来我们可以重写如下:

int duration = MIN(2 + (score / 100), 7);

我错过了什么吗?:-/

编辑如果分数可能是负数,我们必须再增加一个上限:

int duration = MAX(MIN(2 + (score / 100), 7), 2);

编辑 2对称处理底片,您可以使用以下内容:

int duration = MIN(2 + (abs(score) / 100), 7);
于 2012-11-09T21:15:22.017 回答
0

这很接近(也就是未经测试):

-(int) duration:(int) score {
    score = (score > 500) ? 500 : score; // over 600 == 600
    return (score+100)/100 + 1
}
于 2012-11-09T21:15:07.390 回答
0
duration= 2+ (int)(score-100)/100 + score<100? 1:0 ;
于 2012-11-09T21:15:59.503 回答