2011-09-26 12 views
0

가능한 중복 :
How do I change the number of decimal places iOS?
If using Xcode to make an iOS calculator, how would I add a decimal button?튜토리얼

내가 할 수있는 A (단순) 아이폰 계산기를 만드는 방법에 대한 아이폰 OS 튜토리얼을 찾고 있어요 적어도 다음을 수행하십시오 : 사용자가 소수점을 더하거나, 빼거나, 곱하고, 나누고, 입력하게합니다. 이 튜토리얼을 찾을 수 없었기 때문에 누군가가 알고 있다면 알려 주시기 바랍니다. 나는 실제로 당신이 더하기, 빼기, 곱하기, 나눗셈을 할 수 있지만 소수점을 쓰지 않는 것을 찾았다. 사용자가 소수점을 입력하도록하는 방법을 알려 주시면 튜토리얼을 추가 할 필요가 없습니다. 지금 사용하고있는 코드는 다음과 같습니다. 헤더 파일에

: 주요 파일에

#import <UIKit/UIKit.h> 

@interface CalculatorViewController : UIViewController { 

float result; 
IBOutlet UILabel *calculatorScreen; 
int currentOperation; 
float currentNumber; 

} 


-(IBAction)buttonDigitPressed:(id)sender; 
-(IBAction)buttonOperationPressed:(id)sender; 
-(IBAction)cancelInput; 
-(IBAction)cancelOperation; 

는 :

#import "CalculatorViewController.h" 

@implementation CalculatorViewController 


-(IBAction)buttonDigitPressed:(id)sender { 


currentNumber = currentNumber *10 + (float)[sender tag]; 
calculatorScreen.text = [NSString stringWithFormat:@"%.1f", currentNumber]; 

}

-(IBAction)buttonOperationPressed:(id)sender { 
if (currentOperation ==0) result = currentNumber; 
else {   

    switch (currentOperation) { 
     case 1: 
      result = result + currentNumber; 
      break; 
     case 2: 
      result = result - currentNumber; 
      break; 
     case 3: 
      result = result * currentNumber; 
      break; 
     case 4: 
      result = result/currentNumber; 
      break; 
     case 5: 
      currentOperation = 0; 
      break; 

    } 
} 

currentNumber = 0; 
calculatorScreen.text = [NSString stringWithFormat:@"%.1f", result]; 
if ([sender tag] ==0) result=0; 
currentOperation = [sender tag]; 
} 



-(IBAction)cancelInput { 

currentNumber =0; 
calculatorScreen.text = @"0"; 

} 


-(IBAction)cancelOperation { 



currentNumber = 0; 
calculatorScreen.text = @"0"; 
currentOperation = 0; 

} 
+2

이것은 동일한 주제에 대해 물어 본 세 번째 질문입니다. 아직도이 문제를 어떻게 다룰 지 아직 이해하지 못한다면 그 질문에 대한 답을 왜 받아 들였습니까? – Jason

+0

그것은 같은 질문이지만 나는 아직도 나를 위해 일하는 답이 없다. 나는 몇 가지 평판 포인트에 답한 사람에게 대답을 수락합니다. 나는 여전히 좋은 답변을 얻을 수 없으므로 이번에는 계산기에 대한 자습서를 찾고 있습니다. 나는 질문을 삭제하는 법을 모르며, 아무도 이것에 대해 다른 사람들에게 대답하지 않고있다. 그래서 나는 다시 물었다. 나는 그것을 다시 묻는 것이 좋지 않지만 다시는 아무도 다른 사람들에게 대답하지 않는다고 느낍니다. –

+1

@iOS 개발자 - 문제를 해결하지 못하는 답을 수락 할 의무가 없습니다. 현재 답변이 실제로 원하는 것을 해결하지 못한다면, 원래 질문을 편집하여 필요를보다 명확하게하십시오. –

답변

1

이 작동합니다. 단순하고 직접적.

현재 계산의 현재 문자열 값을 저장하도록 currentNumber를 변경하고 (Make this NSMutableString) 소수점 버튼에 콘센트 (buttonDecialPointPressed)를 추가했습니다.

-(IBAction) buttonDigitPressed:(id)sender 
{ 
    currentNumber = [currentNumber appendFormat:@"%d"]; 
    calculatorScreen.text = currentNumber; 
} 

- (IBAction) buttonDecialPointPressed:(id)sender 
{ 
    if(behindTheDecimal == YES) 
     return; 
    behindTheDecimal = YES; 
    currentNumber = [currentNumber appendString:@"."]; 
    calculatorScreen.text = currentNumber; 
} 

-(IBAction)buttonOperationPressed:(id)sender 
{ 
    float number = [currentNumber floatValue]; 
    switch (currentOperation) 
    { 
     case 0: 
      result = number; 
      break; 
     case 1: 
      result = result + number; 
      break; 
     case 2: 
      result = result - number; 
      break; 
     case 3: 
      result = result * number; 
      break; 
     case 4: 
      result = result/number; 
      break; 
     case 5: 
      currentOperation = 0; 
      break; 
     case 6: 
      break; 
    } 

    currentNumber = [currentNumber stringWithFormat:@"%f", result]; 
    calculatorScreen.text = currentNumber; 

    // why is this needed, how is it used? 
    currentOperation = [sender tag]; 
} 


-(IBAction)cancelInput 
{ 
    behindTheDecimal = NO; 
    currentNumber = @"0"; 
    calculatorScreen.text = currentNumber; 
} 

-(IBAction)cancelOperation 
{ 
    behindTheDecimal = NO; 
    currentNumber = @"0"; 
    calculatorScreen.text = currentNumber; 
    currentOperation = 0; 
} 
+1

이 코드가 여러 개의 소수점 항목을 허용한다는 점을 제외하고는. 소수점이 있는지 확인하고 존재하는 경우이를 무시해야합니다. – Jamie

+0

단순한 경우에 맞음. – EricLeaf