CS193p - добавление возврата в калькулятор - PullRequest
1 голос
/ 05 февраля 2012

Я недавно начал посещать онлайн-курс по разработке iPhone от Стэнфордского университета на iTunes U.

Сейчас я пытаюсь выполнить домашние задания для первой пары лекций.Я прошел через пошаговое руководство, где я построил базовый калькулятор, но сейчас я пытаюсь выполнить первое задание и, похоже, не могу его решить.Это следующее:

Реализация кнопки «Backspace» для пользователя, чтобы нажать, если они нажали неправильную цифровую кнопку.Это не означает «отменить», поэтому, если они нажмут не ту кнопку, им не повезет!Вам решать, как справиться со случаем, когда они отстраняются от всего числа, которое находятся в середине ввода, но, когда дисплей полностью гаснет, вероятно, не очень удобно для пользователя.

Я следовал этому: Создание backspace на калькуляторе iOS

Итак, код:

-(IBAction)backspacePressed:(UIButton *)sender {

    NSMutableString *string = (NSMutableString*)[display text];

    int length = [string length];

    NSString *temp = [string substringToIndex:length-1];

    [display setText:[NSString stringWithFormat:@"%@",temp]];

}

Мой вопрос не должен ли я проверить, является ли мой последнийцифра или операнд?Если операнд, нет выполнения и если цифра, удалите его ...

Ответы [ 4 ]

1 голос
/ 28 апреля 2012

Я только начал курс сам, этот пост сейчас довольно старый, но мое решение может помочь другим, пища для размышлений, если ничего больше:

- (IBAction)deletePressed:(id)sender 
{
    NSString *displayText = [display text];
    int length = [displayText length];
    if (length != 1) {
        NSString *newDisplayText = [displayText substringToIndex:length-1];
        [display setText:[NSString stringWithFormat:@"%@",newDisplayText]];
    } else {
        userIsInTheMiddleOfEnteringANumber = NO;
        NSString *newDisplayText = @"0";
        [display setText:[NSString stringWithFormat:@"%@",newDisplayText]];
    }
}
1 голос
/ 05 февраля 2012

Я также прохожу урок осени 2011 года в iTunes U.

Обход дает нам переменную экземпляра userIsInTheMiddleOfEnteringANumber, поэтому я просто проверил, является ли это ДА.

- (IBAction)backspacePressed {
    if (self.userIsInTheMiddleOfEnteringANumber) {
        if ([self.display.text length] > 1) {
            self.display.text = [self.display.text substringToIndex:[self.display.text length] - 1];
        } else {
            self.display.text = @"0";
            self.userIsInTheMiddleOfEnteringANumber = NO;
        }
    }
}
1 голос
/ 05 февраля 2012

Я использовал подход Joe_Schmoe, который прост.(просто удаляйте символы в отображении, пока не достигнете конца).

Если пользователь продолжает нажимать «Clear Error», я также удаляю элемент из стека.

1 голос
/ 05 февраля 2012

Прежде всего, в этом коде есть несколько ненужных шагов ... И чтобы ответить на ваш вопрос, да, вы должны проверить операнд.Вот как я написал бы этот метод с проверкой:

NSString *text = [display text];
int length = [text length];
unichar c = [text characterAtIndex:length];
NSCharacterSet *digits = [NSCharacterSet decimalCharacterSet];
if ([digits characterIsMember:c] || c == '.') {
    NSString *temp = [[display text] substringToIndex:length-1];
    [display setText:temp];
}
...