1

みんな私は何を間違っていますか?

if (numberstring.intValue <=15) {
    rankLabel.text = @"A1";
}
else if (numberstring.intValue >16 && <=40){       
    rankLabel.text = @"A2";
}

「<=40」でエラーが発生します..

4

2 に答える 2

5

変数参照を見逃しました:

if (numberstring.intValue <=15) {
    rankLabel.text = @"A1";
}                                  //        vv here vv
else if (numberstring.intValue >16 && numberstring.intValue <= 40){       
    rankLabel.text = @"A2";
}

オプションのエクストラとして、さまざまな範囲をテストするために整数に繰り返し変換しているオブジェクトnumberstringのように見えます。NSStringこの操作は非常にコストがかかるため、一度変換を行った方がよいでしょう:

int value = [numberstring intValue];
if (value <=15) {
    rankLabel.text = @"A1";
}
else if (value >16 && value <= 40){       
    rankLabel.text = @"A2";
}

また、intValueメソッドはプロパティではないため、Objective-C 2.0 ドット構文を使用してアクセスすることは避け、通常のメソッド呼び出しメカニズムを使用することに注意してください。

于 2012-09-18T15:36:48.113 に答える
2

演算子は 2 つの&&句を結合します。ただし、各句は独立しているため、他の句が削除された場合、それぞれが構文的に正しい必要があります。このルールを条件に適用すると、それだけで"<=40"は構文的に正しくないことがわかります。したがって、次のように、比較される値を参照する必要があります。

if (numberstring.intValue > 16 &&
    numberstring.intValue <= 40)    // this is syntactically correct on its own
于 2012-09-18T15:45:41.683 に答える