2012-09-17 46 views
1

我使用的obj-C,用於查找側的長度和角度爲三角形制造應用程式iPhone。部分應用使用畢達哥拉斯定理。我得到預期標識符在Xcode

NSNumber *pySidea = [NSNumber numberWithInteger:[[sideA text] integerValue]]; 
NSNumber *pySideb = [NSNumber numberWithInteger:[[sideB text] integerValue]]; 
NSNumber *pySidec = [NSNumber numberWithInteger:[[sideC text] integerValue]]; 

int pyAside = [pySidea intValue]; 
int pyBside = [pySideb intValue]; 
int pyCside = [pySidec intValue]; 

if ([aSide length] = 0) { 
    NSString *finalAnserc = [sqrtf(powf(pyAside, 2) + powf(pyBside, 2))]; 
    sideCstring = @"_anserSidec"; 
} 

sideA,sideB和sideC是使用文本字段的三角形的邊。除了

if ([aSide length] = 0) { 
    NSString *finalAnserc = [sqrtf(powf(pyAside, 2) + powf(pyBside, 2))]; 
    sideCstring = @"_anserSidec"; 
} 

我在哪裏得到「期望的標識符」,我沒有得到任何錯誤。謝謝你的幫助。

+2

你的問題是什麼? –

回答

0

檢查你的 '如果' 的條件,應該是if([aSide length] == 0)

記住兩個等號(=)的跡象...

+0

同樣的問題。錯誤顯示的'的NSString * finalAnserc = sqrtf(函數powf(pyAside,2)+函數powf(pyBside,2));'線 –

+0

你說得對,比較是錯誤的,但它不是OP的具體問題。他的下一行出現語法錯誤。 '='在語法上是正確的,即使它在邏輯上是錯誤的。 –

+0

編譯器應該標記這個以及...需要打開警告旋鈕! –

3

這條線:

NSString *finalAnserc = [sqrtf(powf(pyAside, 2) + powf(pyBside, 2))]; 

好像是想創造一個字符串,但除了方括號內的一些算術以外不做任何事情,這是無效的語法。我想你想要的東西,如:

float answer = sqrtf(powf(pyAside, 2) + powf(pyBside, 2)); 
NSString *finalAnswer = [[NSNumber numberWithFloat:answer] stringValue]; 

調用powf()方一些是有點重手了。你可以這樣寫:

float answer = sqrtf(pyAside*pyAside + pyBside*pyBside); 

由於尼西在他的回答指出,你有你的if語句邏輯上的錯誤太多 - 你想使用==可能。

+3

FYI有也是標準函數['hypot將(3)'](http://linux.die.net/man/3/hypot)做計算斜邊,這也避免了在中間結果溢和下溢(雖然這通常不是一個問題)。 –