0

次のコードを含む iOS 5 電卓に取り組んでいます。

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

//Enter digit, avoiding two-decimal-point case.
NSString *digit = sender.currentTitle;
NSRange range = [self.display.text rangeOfString:@"."];
if (range.location==NSNotFound || (![digit isEqualToString:@"."]))
    if (self.userIsEnteringNumber)
    {
        self.display.text = [self.display.text stringByAppendingString:digit];
    }
    else 
    {
        if (![sender.currentTitle isEqualToString:@"."])
        {
            self.display.text = digit;
        }
        else 
        {
            self.display.text = @"0.";
        }
        self.userIsEnteringNumber = YES;
    }
}

- (IBAction)changeSignPressed 
{

//Reverse sign from positive to negative or vice versa.
if (self.numberIsNegative) self.numberIsNegative = NO;
if (!(self.numberIsNegative)) self.numberIsNegative = YES;

//Correct display to reflect change in sign.
if (self.numberIsNegative)
{
    if (![[self.display.text substringToIndex:1] isEqualToString:@"-"])
    {
        self.display.text = [@"-" stringByAppendingString:self.display.text];
    }
}
if (!self.numberIsNegative)
{ 
     /*This isn't working--why not?
    if ([[self.display.text substringToIndex:1] isEqualToString:@"-"])
    {
        NSLog(@"Okay."); //This doesn't log, so obv. the problem is in the previous line.
        self.display.text = [self.display.text substringFromIndex:1];
    }
     */
}
}

changeSignPressed のコメントアウトされたコードをどのようにいじっても機能しません。これを修正する方法についてのアイデアはありますか?

4

1 に答える 1

1

それはおそらくこのコードです:

//Reverse sign from positive to negative or vice versa.
if (self.numberIsNegative) self.numberIsNegative = NO;
if (!(self.numberIsNegative)) self.numberIsNegative = YES;

そうじゃないelseならself.numberIsNegative最初はそうYESなりますよねNO;;その後、次の行のようにすぐに表示さNOれ、 に戻されYESます。

いずれにせよ、そのコードは必要以上に複雑です。これを言うだけで、フラグを反転できます。

self.numberIsNegative = ! self.numberIsNegative;
于 2012-07-28T05:44:50.553 に答える