-3

Xcode iOS SDK 6.1 を使用して電卓を作成しています。しかし、私の電卓は 2 つの数値を足し合わせることができないため、問題に直面しました。電卓は常に答えとして最初の数字を教えてくれるようです。問題を解決する方法はありますか?

コードは次のとおりです。

#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
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 に答える
1

2 つの整数キャストの間に NSLog を配置して、文字列が正常に読み取られるかどうか、またはいずれかがゼロかどうかを確認してください。そのうちの 1 つがゼロの場合、インターフェイス ビルダーでアウトレットを 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 に答える