0

私はアプリ内でifを使用するのが本当に嫌いで、これは非常に単純なパターンだと思ったので、アプリ内で読みやすくするために、以下のコードを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);

私は何かが足りないのですか?:-/

スコアが負の可能性がある場合は編集します。キャップをもう1つ追加する必要があります。

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 に答える