2011-09-21 40 views
1

比方說,我有一個整數,如2,734,465,它被稱爲intOne。我如何「分解」該整數,以便可以將數字放入7個UILabels中?所以,在第一個標籤中我會有2個,然後在第二個標籤中我會有7個,依此類推。我將如何做到這一點?謝謝你的幫助!如何分解整數?

+0

是的,但是......我的上帝..爲什麼? ! –

+0

只是我一直在想......這也是一種分析構成整數的數字的方法。 –

+0

如果您想更直接地處理它(而不是穿梭到UI控件),請反覆使用除法和模數。例如。 http://stackoverflow.com/questions/66107/how-to-identify-specific-digits-of-an-integer-input-in-c –

回答

4

使用的東西將其轉換爲字符串像

NSString *intString = [NSString stringWithFormat:@"%d", myInt]; 

然後你就可以得到單個字符出:

myChar = [intString characterAtIndex: i]; 
+0

太棒了,謝謝! –

-1

將整型轉換爲字符串 - 然後使用方法將字符串拆分/子串字符串轉換爲7個字符串。或者你需要的金額。在每個標籤中放入一個字符串。

開始與[NSString stringWithFormat:@"%d", myNum];

+2

在C中將一個'int'鑄造成一個'NSString *'將會變成它成一個遺忘的指針,訪問將會崩潰程序 – bshirley

+0

@bshirley,對於真實的?這會導致程序崩潰嗎?怪異的我所有的應用程序仍然工作... – LouwHopley

+0

您添加的編輯是_不_一個演員。 'NSString * string =(NSString *)myNum'正在將一個字符串轉換爲int。你的代碼_does_安全地將一個'int'轉換爲一個'NSString *'。 – bshirley

2

之後,你有字符串中,你可以還用途:

NSString *keyStr = [intString substringWithRange:NSMakeRange (i, j)]; 

得到一個子直接

作爲替代字符串操作你這是怎麼突破數n除了數學:

int n = 1357246; 
    int digit; 
    int divisor; 
    for (int i = log10(n); i> 0; i--) { 
     divisor = pow(10,i); 

     digit = n/divisor; 
     n = n - digit*divisor; 
     NSLog(@"%i ",digit); 
    } 
     NSLog(@"%i ",n); 
0

這取決於如果你想數拿起相關的區域特定格式例如千分隔符和小數點。如果你這樣做,然後把它變成一個字符串,然後提取其他人建議的字符。

如果你想得到每個十進制數字的值,那麼你將10,100,1000等模從10的冪開始,小於總值(例如對於213,從100開始,然後10,然後1)

2

下面是一個不同的方法。這將創建一個數組,其元素是單個數字(和前面的「 - 」如果負):

#import <Foundation/Foundation.h> 

NSArray* brokenArrayWithInt(NSInteger intOne) { 
    NSMutableArray *result = [[[NSMutableArray alloc] init] autorelease]; 
    BOOL isNegative = NO; 
    if (intOne < 0) { 
     isNegative = YES; 
     intOne = -intOne; 
    } 
    do { 
     [result insertObject:[NSNumber numberWithInteger:intOne % 10] atIndex:0]; 
     intOne /= 10; 
    } while (intOne > 0); 

    if (isNegative) { 
     [result insertObject:@"-" atIndex:0]; 
    } 
    return result; 
} 

int main (int argc, const char * argv[]) { 
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 

    NSArray *brokenArray = brokenArrayWithInt(2734465); 
    NSLog(@"Array: %@", brokenArray); 
    brokenArray = brokenArrayWithInt(-2734465); 
    NSLog(@"Array: %@", brokenArray); 
    brokenArray = brokenArrayWithInt(0); 
    NSLog(@"Array: %@", brokenArray); 
    [pool drain]; 
    return 0; 
} 

這裏的結果:

Running… 
2011-09-21 12:28:52.531 so7505138[6739:a0f] Array: (
    2, 
    7, 
    3, 
    4, 
    4, 
    6, 
    5 
) 
2011-09-21 12:28:52.533 so7505138[6739:a0f] Array: (
    "-", 
    2, 
    7, 
    3, 
    4, 
    4, 
    6, 
    5 
) 
2011-09-21 12:28:52.533 so7505138[6739:a0f] Array: (
    0 
)