Objective c 如果';公式里有什么?(Obj-C)

Objective c 如果';公式里有什么?(Obj-C),objective-c,if-statement,design-patterns,formula,Objective C,If Statement,Design Patterns,Formula,我真的很讨厌在我的应用程序中使用if,我认为这是一个非常简单的模式,那么有没有办法将下面的代码转换成一行公式,以提高我的应用程序的可读性 代码如下: int duration = 0; if (score < 100) { duration = 2; } else if (score >= 100 && score < 200) { duration = 3; } else if (score >=

我真的很讨厌在我的应用程序中使用if,我认为这是一个非常简单的模式,那么有没有办法将下面的代码转换成一行公式,以提高我的应用程序的可读性

代码如下:

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;
    } 
int duration=0;
如果(分数<100){
持续时间=2;
}否则如果(分数>=100和分数<200){
持续时间=3;
}否则如果(分数>=200&&score<300){
持续时间=4;
}否则如果(分数>=300和分数<400){
持续时间=5;
}否则如果(分数>=400&&score<500){
持续时间=6;
}否则如果(分数>=500){
持续时间=7;
} 
我自己不擅长数学,也不擅长用公式来解决这个问题,那么有人能帮我得到一个公式来实现上面的代码吗

谢谢

这是接近(也就是说,这是未经测试的):


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

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

duration=2+(int)(分数-100)/100+分数您有重叠条件。如果
score==100
,该怎么办?
duration
应该是
2
还是
3
?代码的意图是不明确的(虽然值最终将为
2
,因为只会计算第一个条件)。可以使用开关大小写,但它不是单行代码如果它在300和400之间,分数意味着什么?这是故意漏掉的吗?对不起,伙计们,我用正确的ifsSorry再次更新了代码,输入错误。我更新了代码。是的,但我有这样的习惯。我会用一个更可读的符号来代替它。哦,我还到处使用if,以及使用if(!x):)检查空值。是否可以实现我的代码,但也与负数兼容?他们将是完全相同的检查,除了分数可能是负数。我知道我在最初的问题中没有问这个问题,但我意识到在我的游戏中分数也可以是负值。当然,你想为负片设置什么布局?与我最初发布的内容相同,但除了检查正分数值,它们将是负值。持续时间不受此影响。如果任何负数的持续时间都应该是2-只需使用我答案中的第二个片段,低于100(包括负数)的任何内容都会产生2,低于500的任何内容都会产生2到7,高于500的任何内容都会产生7。任何负数的持续时间都不会是2。他们仍然会遵守我上面显示的检查,但除了负值之外,分数值是相同的。所以>=-100&<-200等等。。
int duration = MIN(2 + (abs(score) / 100), 7);
duration= 2+ (int)(score-100)/100 + score<100? 1:0 ;