2011-11-20 38 views
0

我試圖做一個應用程序來將十進制數轉換成二進制數,但是當我輸入十進制數字到一個文本字段並有一個按鈕調用binaryConvert方法時,它不斷返回111111111111111111(每個評估1) 。爲什麼是這樣??Obj C代碼不工作,是不是正確評估一個方法?

- (NSString*)binaryConvert:(int)decNum { 

    int i = 1; 
    int value = 524288; 
    NSString * binary = @"."; 

    while (i <= 19) { 
     if ((decNum/value) >= 1) { 
      binary = [binary stringByAppendingString:@"1"]; 
      decNum -= value; 
     } else { 
      binary = [binary stringByAppendingString:@"0"]; 
     } 
     value /= 2; 
     i++; 
    } 
    return binary; 
} 

- (IBAction)convertToBinary:(id)sender { 

    int decNum = (int)textField.text; 
    if ([textField.text length] > 6) { 
     answer.text = @"Too many numbers entered."; 
    } else { 
     answer.text = [self binaryConvert:decNum]; 
    } 
    [textField resignFirstResponder]; 
} 

answer是一個標籤。

+0

對於你正在做的更小的版本,我會建議看看這個問題:http://stackoverflow.com/questions/1908845/how -to-convert-nsinteger -nsstring-to-a-binary-string-value –

+0

1)什麼是'value = 524288'? 2)你只是檢查整數除法的結果。您需要檢查部門的其餘部分以確定數字是1還是0. 3)確保您可以在嘗試編碼之前手動執行算法。 –

+1

P.S.目標C正確評估方法。在責備編譯器之前責怪你的代碼是個好習慣......如果你這樣做的話,你會是正確的99.99 ...%。 –

回答

2

int decNum =(int)textField.text; // WRONG

應該是:

INT decNum = [的TextField.text的intValue];

//我以前的錯誤答案:

// decNum - =值應每次做;不僅在if((decNum/value)> = 1)

+0

但是接下來的值會是負值,因爲如果!((decNum/value)> = 1),那意味着值越大。 – Seany242

+0

Ooops。我的錯。你的算法是正確的。問題是statt int decNum =(int)textField.text;它應該是int decNum = [textField.text intValue]; int decNum =(int)textField.text只是將字符串的地址放入decNum。 – jamihash

相關問題