-1

こんにちは! 私の電卓プログラムでは、減算/乗算/除算の方法ではなく、足し算の方法が機能します。

加算方法:

-(IBAction) clickPlus
{
    [self processOp: '+'];
}

減算方法:

-(IBAction) clickMinus
{
    [self processOp: '-'];
}

処理方法:

-(void) processOp: (char) theOp
{
    NSString *opStr;

    op = theOp;

    switch (theOp) {
        case '+':
            opStr = @" + ";
            break;
        case '-':
            opStr = @" – ";
            break;
        case '*':
            opStr = @" * ";
            break;
        case '/':
            opStr = @" ÷ ";
            break;
    }

    [self storeFracPart];
    firstOperand = NO;
    isNumerator = YES;

    [displayString appendString: opStr];
    display.text = displayString;
}

そのメソッドでは、「op」変数が使用されます:「clickEquals

-(IBAction) clickEquals
{
    if ( firstOperand == NO )
    {
        [self storeFracPart];
        [myCalculator performOperation: op];

        [displayString appendString: @" = "];
        [displayString appendString: [myCalculator.accumulator
                                      convertToString]];
        display.text = displayString;

        currentNumber = 0;
        isNumerator = YES;
        firstOperand = YES;
        [displayString setString: @""];
    }
}

なぜ「op」はゴミを集めると思いますか?

さらにコードが必要な場合は、私に知らせてください。

4

1 に答える 1

0

何がop入っていclickEqualsますか? それはクラスivarであることになっていますか?processOp呼び出されたローカル変数を使用しているopため、ivar を割り当てていないため、間違っている場合。

この種の問題を自分でデバッグする方法を学ぶ必要があります。それほど難しくありません。デバッガーでコードの実行を 1 行ずつ調べて、どのような変化が起こるかを観察すると、この種の問題を見つけることができるはずです。

于 2012-08-11T09:22:01.580 に答える