| 

.NET C# Java Javascript Exception

2
Gute Morgen zusammen,
ich habe eine kleine Taschenrechner App programmiert und möchte nun den Rechenweg (Ziffer plus/minus/mal/geteilt Ziffer) im Display anzeigen lassen. Wie kann ich meinen unten aufgeführten Code ändern? Gruss, Chris

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize userIsTypingNumber;
@synthesize waitingOperant;
@synthesize waitingOperation;

- (void)viewDidLoad
{
[super viewDidLoad];

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}

- (IBAction)digitPressed:(id)sender
{
//Button als Pointer übergibt sich selbst und lößt Methode aus
UIButton *button = sender;
//Ist der Benutzer dabei eine Zahl einzugeben ?
if(!self.userIsTypingNumber) {
//Display wird gecleared / Auf Null gesetzt
self.display.text = @"";
//Benutzer gibt einen Wert ein
self.userIsTypingNumber = YES;
}
//Display stellt gedrückte Taste hinten an
//Button current Title ist Wert des Buttons 1 2 3 4...
self.display.text = [self.display.text stringByAppendingString:[button currentTitle]];
}

- (IBAction)commaPressed:(id)sender
{
//Überprüfung: Ist bereits ein Komma im Display vorhanden ?
if ([self.display.text rangeOfString:@"."].location == NSNotFound)
{
//Displaytext wird um ein Komma erweitert
self.display.text = [self.display.text stringByAppendingString:@"."];
}

}

// Plus Minus Mal Geteilt AC oder C
- (IBAction)operationPressed:(id)sender
{
//Button Pointer = Sender
UIButton *button = sender;
//Benutzer drückt momentan keine Nummer
self.userIsTypingNumber = NO;

self.display.text = [self performOperation:[button currentTitle]
withOperant:[self.display.text doubleValue]];
}

- (NSString*) performOperation: (NSString*) operation withOperant: (double) operant;
{
//Wurde C Taste gedrückt?
if ([operation isEqualToString:@"C"]){
return @"";
}else
//Wurde die Taste AC gedrückt?
if ([operation isEqualToString:@"AC"]){
self.waitingOperant = 0.0;
self.waitingOperation = nil;
return @"";
} else if ([self.waitingOperation isEqualToString:@"+"]) {
operant = self.waitingOperant + operant;
}
else if ([self.waitingOperation isEqualToString:@"-"]) {
operant = self.waitingOperant - operant;
}
else if ([self.waitingOperation isEqualToString:@"*"]) {
operant = self.waitingOperant * operant;
}
else if ([self.waitingOperation isEqualToString:@"+"]) {
operant = self.waitingOperant / operant;
}

self.waitingOperant = operant;
self.waitingOperation = operation;
//Ergebnis wird ausgegeben
return [NSString stringWithFormat:@"%g", operant];
}
@end
28.11.2012
Chris70 13 1 3
2 Antworten
0
Um den gesamten Rechenweg mitzuplotten würde ich in der Klasse einen neuen String definieren und in der action Methoden (...pressed) den Button-text diesem NSMutableString hinzufügen. Bei "C" und "AC" wird das Ding wieder gelöscht.
Oder habe ich dich völlig falsch verstanden?
29.11.2012
puls200 3,8k 7
Vielen Dank für den Tipp. Wo würdet Du diesen MutableString hinsetzen und wie würdest Du ihn clearen, bzw. nur eine Eingabe löschen (Taste C)? Gruss, Chris
Chris70 29.11.2012
Der String sollte eine Member-Variable deiner Klasse ViewController sein, weil du von unterschiedlichen Methoden darauf zugreifen willst.
Löschen geht z.B. mit _rechenWegString = [NSMutableString stringWithString:@""];
Schau einfach mal in die Doku von NSMutableString: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSMutableString_Class/Reference/Reference.html
puls200 30.11.2012
Hallo Puls200, bin mit meinem Display Text noch nicht weiter gekommen. Auch die Doku war nicht sehr hilfreich. Ich bin noch ein Anfänger. Kannst Du mir noch einen Tipp geben?? Gruss, Chris
Chris70 03.12.2012
Bei der Zahleneingabe machst du es doch schon mit dem display.text: self.display.text = [self.display.text stringByAppendingString:[button currentTitle]];
Genau dasselbe (mit dem anderen String) machst du jetzt in OperationPressed. Zusätzlich musst du natürlich noch ein Control hinzufügen, dass dir den neuen String anzeigt.
puls200 04.12.2012
0
Hallo Puls200,
jetzt hat alles geklappt. Ich möchte mich auf diesem Weg für Deine Hilfe und Deine Geduld mit meinen Anfängerfragen bedanken. Deine Tipps haben mir sehr geholfen. Danke. Gruss, Chris
05.12.2012
Chris70 13 1 3

Stelle deine Xcode-Frage jetzt!