2014-03-02 118 views
0

我工作的計算器應用程序,輸出答案,而不是點擊等號按鈕。到目前爲止,除非你在已經計算好的數字上加上(或 - ,/,*),否則一切正常。例如,如果我做10 + 15 + 9,它會給我169而不是正確答案(34)。我想我知道爲什麼會發生這種情況,但我不確定如何解決這個問題。計算器的問題,答案是動態回答

這裏是我的代碼:

 if (answer == NO) { 

    saved1 = saved1 * 10 + digit; 

    if ([self.screen.text isEqual: @"0"] || operationClear == YES) { 

     self.screen.text = number; 

     operationClear = NO; 

    }else{ 


     self.screen.text = [NSString stringWithFormat:@"%@%@", self.screen.text, number]; 

    } 


}else{ 

    saved2 = saved2 * 10 + digit; 

    if (plus == YES) { 

     answerr = saved1 + saved2; 

     //saved1 = answerr; 

     // saved2 = 0; 

     NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init]; 

     [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 

     self.screen.text = [formatter stringFromNumber:[NSNumber numberWithDouble:answerr]]; 



    }   
    } 
} 

我相信這個問題是當你到了加上它只是增加了9到的saved2結束的第二次。爲了解決這個問題,我試着讓saved1等於這個答案,並且讓saved2等於零,這是行不通的。 任何想法?如果我犯了這個錯誤,請告訴我,我是iOS開發新手,希望以最有效的方式做到這一點。 謝謝。

回答

1

因此,從您的代碼看,您使用數學來顯示用戶按下一個新數字後的數字。

舉例來說,如果「1」被顯示和用戶,你會得到「12」做1×10 + 2

也許一個更好的方式做這將是對付比如字符串按2,當如果「1」被顯示,並且用戶輸入數字

例如,用戶按下「2」,以「2」的字符串,並把它添加到「1」串:

NSString * displayString = calculatorDisplay.text; // display 
NSString * userInputString = @"2"; 

calculatorDisplay.text = [displayString stringByAppendingString:userInputString]; 

然後,當你需要一個號碼時,使用這個號碼將它轉換成一個號碼:

- (NSNumber *)numberFromString:(NSString *)string { 
    NSNumberFormatter * f = [[NSNumberFormatter alloc] init]; 
    [f setNumberStyle:NSNumberFormatterDecimalStyle]; 
    return [f numberFromString:string]; 
} 

我知道這改變了一些事情,但我認爲它會更一致。它還可以讓用戶輕鬆輸入小數點等。

+0

我本來就是這樣想的,但有人告訴我有很多人,我應該這樣做,就像我現在這樣做。我不知道我最終會做什麼。謝謝。 – user3186310

+0

嗯,有什麼理由?你如何處理小數? – Logan

+0

我其實還沒有達到那個程度,我想我可能會用你的方式去做,看起來它會讓事情變得更簡單。我怎麼會這樣做實際的數學呢? – user3186310