Недавно я начал следить за онлайн-курсом по разработке iPhone от Стэнфордского университета на iTunes U.
Сейчас я пытаюсь делать домашние задания для первой пары лекций. Я прошел через пошаговое руководство, в котором я построил базовый калькулятор, но теперь я пытаюсь выполнить первое задание и, похоже, не могу его решить. Это выглядит следующим образом:
Ваш калькулятор уже работает с числами с плавающей запятой (например, если вы нажмете 3/4 = он правильно покажет результирующее значение 0,75), однако для пользователя нет возможности для ввода числа с плавающей запятой. Исправьте это. Разрешить только допустимую плавающую точку числа, которые нужно ввести (например, «192.168.0.1» не является допустимым числом с плавающей запятой).
Прежде всего, я не уверен, считается ли число с плавающей запятой как digitPressed
или operationPressed
. Я даже пробовал использовать новый метод, названный floatPointPressed
, но это не сработало. Может ли кто-нибудь указать на это?
Когда я увидел это как digitPressed, я попробовал что-то вроде этого:
if (hasFloatingPoint) {
NSRange range = [[display text] rangeOfString:@"."];
if (range.location == NSNotFound)
{
[display setText:[[display text] stringByAppendingFormat:digit]];
hasFloatingPoint = YES;
}
}
else {
[display setText:[[display text] stringByAppendingFormat:digit]];
}
Но я думаю, что здесь не хватает ключевой концепции.
Я также пробовал другое решение, которое я к сожалению, уже отменены, поэтому я не могу предоставить код, но случилось следующее: я мог нажать число, скажем 5
, а затем число с плавающей запятой и 3
, чтобы я в итоге получится 5.3
. Затем мне удалось «отключить» плавающую точку для оставшейся части ввода .. Но, думаю, я был слишком строг к этому: я не мог, например, вставить 5.3.2
, но после нажатия кнопки управления ( +
и т. д.) он все равно не позволял мне нажимать кнопку с плавающей запятой. Полагаю, мне следует сбросить логическое значение, которое я использовал для этого?
Я не ищу здесь полностью написанного решения, но может ли кто-нибудь быть настолько любезным, чтобы дать базовый совет, как решить эту проблему? Какой-то пошаговый обзор того, что я должен делать и о чем думать, без фактического предоставления кода решения.
Заранее спасибо.