-3

我正在使用 Xcode iOS SDK 6.1 制作计算器。但是,我遇到了一个问题,因为我的计算器无法将这两个数字相加。计算器似乎总是给我第一个数字作为答案。有没有办法解决这个问题?

这是代码:

#import "ViewController.h"


@interface ViewController ()

@end

@implementation ViewController
@synthesize FirstNumber,SecondNumber;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    self.FirstNumber.delegate = self;
    self.SecondNumber.delegate = self;

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)dealloc
{
    [FirstNumber release];
    [SecondNumber release];

    [super dealloc];
}

- (IBAction)Calculate:(id)sender
{
    NSString *finalNumberString;
    int firstNumberInt, secondNumberInt, finalNumberInt;

    firstNumberInt = [FirstNumber.text integerValue];
    secondNumberInt = [SecondNumber.text integerValue];

    finalNumberInt = firstNumberInt + secondNumberInt;


    UIAlertView *alerting = [[UIAlertView alloc]initWithTitle:@"Answer" message:[NSString stringWithFormat:@"The answer is %d",finalNumberInt] delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles: nil];

    [alerting show];

    _FinalNumber.text = [[NSString alloc] initWithFormat:@"%i",finalNumberInt];

}

- (BOOL)textFieldShouldReturn:(UITextField*)textField
{
    [FirstNumber resignFirstResponder];
    [SecondNumber resignFirstResponder];
    return NO;
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    if ([touch view] == self.view)
    {
        [FirstNumber resignFirstResponder];
        [SecondNumber resignFirstResponder];

    }
}
@end
4

4 回答 4

5

您似乎在警报中显示了错误的值。

[NSString stringWithFormat:@"The answer is %d",secondNumberInt]

这应该是

[NSString stringWithFormat:@"The answer is %d", finalNumberInt]

反而。

于 2013-05-01T19:01:38.733 回答
1

尝试在两个整数转换之间放置一个 NSLog,并检查字符串是否被正确读取或者其中一个是否为零。如果其中一个为零,则可能您尚未将插座连接到界面生成器中的 UITextField,或者您可能只是在文本字段中输入了一些奇怪的字符串:因为您正在转换为整数,所以您不应该输入十进制数字.

firstNumberInt = [FirstNumber.text integerValue];
secondNumberInt = [SecondNumber.text integerValue];

NSLog(@"FirstNumber string %@ integer %d", FirstNumber.text, firstNumberInt);
NSLog(@"SecondNumber string %@ integer %d", SecondNumber.text, secondNumberInt);

finalNumberInt = firstNumberInt + secondNumberInt;
于 2013-05-01T19:10:51.533 回答
1
UIAlertView *alerting = [[UIAlertView alloc]initWithTitle:@"Answer" message:[NSString stringWithFormat:@"The answer is %d",secondNumberInt] delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles: nil];

secondNumberInt看起来应该是finalNumberInt

于 2013-05-01T19:03:43.493 回答
1

用于发出警报消息的值不正确,

    UIAlertView *alerting = [[UIAlertView alloc]initWithTitle:@"Answer" message:[NSString stringWithFormat:@"The answer is %d",secondNumberInt] delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles: nil];
    [alerting show];

像这样改变那部分,

    UIAlertView *alerting = [[UIAlertView alloc]initWithTitle:@"Answer" message:[NSString stringWithFormat:@"The answer is %d",finalNumberInt] delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles: nil];
    [alerting show];
于 2013-05-01T19:04:06.683 回答