2012-07-24 4 views
0

임이 코드가 작동하지 않는 이유가 궁금합니다. 그것은 계산기를위한 것입니다 :) 나는 계산기가 인식하고 +, - 사용자가 입력 한 것에 따라 사용하는 기호 (바나나)가 필요합니다. 여기If else if Statement

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]]]; 
} 
} 
+0

적어도 평등을 테스트하려면'=='를 사용해야합니다. –

+0

isEquals (또는 이와 비슷한) 함수가 필요합니다. 현재 바나나에'@ "+"'를 지정하고 있습니다. – nhahtdh

+0

컴파일러는'= '의 사용에 대해 경고했지만 컴파일러 경고를 명시 적으로 해제하는 이중 괄호를 넣었음에 유의하십시오. 이 방법으로 컴파일러 경고를 끄도록 조심하십시오. –

답변

1

는이 작업을 수행 할 방법은 다음과 같습니다

if ([banana isEqualToString:@"-"]) 
{ 
    [calc minus]; 
} 
else if ([banana isEqualToString:@"+"]) 
{ 
    [calc add]; 
} 
+0

나는 실제로 너를 사랑한다. <3 –

+0

ㅎ, 왜? : P 나에 대해 알고 있니, 아니면 내 대답을 좋아하니? : P –

+0

나는 당신의 대답을 좋아하고, 완벽하게 작동한다. :) 그리고 매우 빠른 답변. 고마워요. –

2

당신은 [@"AAAA" isEqualToString : @"BBBB"]을 사용해야있는 NSString가 같은지 여부를 판단하기 위해. ==은 메모리의 동일한 주소에 없으므로 사용할 수 없습니다.

+0

@DavidMurray "[@"AAAA "isEqualToString : @"BBBB "]"와 같이 편집 할 수 없습니다. 내 AAAA와 BBBB는 NSString *이기 때문에. –

1

=은 할당입니다. 그것은 비교와 절대적으로 관련이 없습니다.

==은 2 개의 표현식을 비교하여 동일한지 확인합니다. 이는 정수 유형 (예 : enum, char, int, short, long, long long, BOOL) 또는 참조 (2 개의 포인터가 동일한 개체를 가리키고 있는지 확인)를 비교하는 데 사용할 수 있습니다. 2 개의 포인터가 동일한 값을 포함하는 2 개의 다른 객체를 가리킬 수 있지만, ==은 그것들을 다른 것으로 비교합니다. floatdouble과 같은 부동 소수점 유형에는 항등을 비교하는 약간 다른 방법이 필요합니다.

==으로 테스트 어떤지, === 혼동을 선점 할 수있는 방법으로, 어떤 사람들은 좌측의 값 및 우변 (예컨대 2 == variable)에 변수를 넣어. 만약 그들이 실수로 ===으로 오게되면, 컴파일러는 불평 할 것입니다.

두 개체의 내용을 비교하려면이 경우 NSString이고 isEquals 기능 유형을 검색해야합니다. NSString의 경우 2 문자열의 내용이 동일한 지 비교하려면 isEqualToString을 사용해야합니다.