0

なぜこのコードが機能しないのか疑問に思っています。電卓用です:)電卓が記号(バナナ)を認識し、ユーザーの入力に応じて+、-のいずれかを使用する必要があります。

NSString *list = [Sum_TextField text]; 
NSArray *listItemsArray = [list componentsSeparatedByString:@" "];
int batman = [[listItemsArray objectAtIndex: 0] intValue]; 
NSString *banana = [listItemsArray objectAtIndex: 1];
int joker = [[listItemsArray objectAtIndex: 2] intValue];
{

    Calculator* calc = [[Calculator alloc] init];
    [calc setNum1:batman];
    [calc setNum2:joker];
    if ((banana = @"-"))
    {
        [calc minus];
    }
    else if ((banana = @"+"))
    {
        [calc add];
    } 

    [Answer_TextField setText:[NSString stringWithFormat:@"%d", [calc answer]]];  
}
}
4

3 に答える 3

2

NSString が等しいかどうかを判断するには、 を使用する必要があります[@"AAAA" isEqualToString : @"BBBB"]==メモリの同じアドレスにないため、使用できません。

于 2012-07-24T04:00:26.537 に答える
1

これを行う方法は次のとおりです。

 if ([banana isEqualToString:@"-"])
 {
     [calc minus];
 }
 else if ([banana isEqualToString:@"+"])
 {
     [calc add];
 } 
于 2012-07-24T03:56:49.623 に答える
1

=課題です。比較とは全く関係ありません。

==2 つの式を比較して、それらが等しいかどうかを確認します。これは、整数型 ( 、 、 、 、 、 など) または参照 (2 つのポインターが同じオブジェクトを指しているかどうかを確認する) を比較enumするcharためintshort使用longできlong longますBOOL。2 つのポインターは、内部に同じ値を含む 2 つの異なるオブジェクトを指すことができますが、==それらを異なるものとして比較することに注意してください。float(とのような浮動小数点型でdoubleは、等値を比較するために少し異なる方法が必要です)。

との混同を避ける方法として、===の等価性テストのため==に、値を左側に、変数を右側に置く人もいます (例: 2 == variable)。とタイプミス==した=場合、コンパイラは文句を言います。

2 つのオブジェクト (この場合は ) の内容を比較する場合は、関数のタイプをNSString検索する必要があります。isEqualsの場合、2 つの文字列の内容が同じかどうかを比較する場合にNSString使用します。isEqualToString

于 2012-07-24T04:03:31.713 に答える