2016-03-29 13 views
-2

Ich mache meinen eigenen Rechner und ich kam zu der Frage.
Sorry für Neuling Frage, aber ich habe es nicht gefunden.
Wie kann ich einen NSInteger an einen anderen NSInteger in Objective-C anhängen;
zum Beispiel:
5 + 5 = 55
6 + 4 + 3 = 643
usw.Verketten Sie einen NSInteger mit NSInteger

+0

Wenn Sie Rechner Frage zu http://stackoverflow.com/questions/4892152/what-isa-fast-c-or-objective-c-math-parser verwandt und Sie finden Lösung dort – RolandasR

Antwort

2

Wenn sie eine einzelne Ziffer (wie in einem Rechner) sind, können Sie einfach tun:

NSInteger newNumber = (oldNumber * 10) + newDigit; 

oder in einem Verfahren:

- (NSInteger)number:(NSInteger)currentNumber byAdding:(NSInteger)newDigit { 
    //Assumes 0 <= newDigit <= 9 
    return (currentNumber * 10) + newDigit; 
} 

Wenn sie mehr als eine Ziffer haben können sie in Strings machen, verketten Sie konvertieren sie zurück in Ganzzahlen oder verwenden einfache Arithmetik, um die Potenz von 10 zu ermitteln, mit der Sie multiplizieren müssen.

EDIT: 6 + 4 + 3 Unter der Annahme, eine Ziffer zu einem Zeitpunkt zur Verfügung gestellt:

NSInteger result = [self number:[self number:6 byAdding:4] byAdding:3]; 

rein rechnerische Lösung:

- (NSInteger)powerOfTenForNumber:(NSInteger)number { 
    NSInteger result = 1; 
    while (number > 0) { 
     result *= 10; 
     number /= 10; 
    } 
    return result; 
} 


- (NSInteger)number:(NSInteger)currentNumber byAdding:(NSInteger) newNumber { 
    return (currentNumber * [self powerOfTenForNumber:newNumber]) + newNumber; 
} 
+0

Erklärung Auf die Down-Abstimmung würde sehr geschätzt werden. – fpg1503

+1

Wie in der Post gefragt, tun '6 + 4 + 3' mit Ihrer Methode. – Adam

+0

Das ist eine schöne Lösung, danke! –

3

Sie haben sie in Strings zu konvertieren. Hier ist eine Art und Weise ist:

NSNumber *i1 = @6; 
NSNumber *i2 = @4; 
NSNumber *i3 = @3; 

NSMutableString *str = [NSMutableString new]; 
[str appendString:[i1 stringValue]]; 
[str appendString:[i2 stringValue]]; 
[str appendString:[i3 stringValue]]; 

NSLog(@"result='%@", str); 

Doch all das gesagt zu haben, es ist mir nicht klar, warum Sie überhaupt sind verketten.

+0

Verketten getan, um einen NSInteger-Wert zu tun und dann einige Operationen mit diesem Wert. Irgendwelche anderen Ideen, um das zu machen? Ich weiß es einfach nicht. –

+0

@SergeiBynas Leider verstehe ich Ihre Frage nicht. – trojanfoe

+1

@ fpg1503 Warum der Downvote? Es ist ironisch, dass Sie downvoted sind und nach einer Erklärung fragen und dann genau dasselbe tun. – trojanfoe

Verwandte Themen