2011-09-09 3 views
0

나는 사용자가 입력 한 간단한 숫자를 계산하는 프로그램을 작성하고 있습니다. 2, 4, 7, 10, 12 등등.사용자 입력 저장, 계산 및 끝에 표시

어떻게 든 입력 텍스트 (다른 ​​텍스트 필드에서 오는)를 저장하는 프로그램이 필요합니다. 이를 내부 방정식에 사용하고 마지막에 사용자에게 보여줍니다.

어떻게하면됩니까? 나는 프로그래밍에 새로운 점을 유의하십시오.

나는 textFields를 정의하고, IBAction을 계산하는 방법을 알고 있고, 작동하는 - (void) calculate를 만들려고 시도했지만, 단지 하나의 입력에서만 시도했습니다. 다음 코드를 실행하면 3 개의 텍스트 필드 (첫 번째 행 (resultOne)에서 사용되는) 대신 6 개의 텍스트 필드에서 입력을 받아 잘못된 숫자가 표시됩니다. 그러나 나는 아직도 이것을하는 더 좋은 방법이 필요하다.

-(void) calculate{ 
weightOne = [v1Text.text floatValue]/2; 
weightTwo = [v2Text.text floatValue]/2; 
resultOne = [m1Text.text floatValue] * weightOne + [s1Text.text floatValue] * weightOne; 
resultTwo = [m2Text.text floatValue] * weightTwo + [s2Text.text floatValue] * weightTwo; 
_resultTotal = (resultOne + resultTwo)/(weightOne + weightTwo); 

NSString *resultString = [[NSString alloc] 
          initWithFormat: @"%.2f", resultOne]; 
resultLabel.text = resultString; 
[resultString release]; 
} 

나는 위의 코드는 resultOne를 출력하는 것을 알고 있지만,이 방정식이 작동하는지 알고, 그냥 내 자신의 테스트를위한 것입니다. 그러나 나는 위의 코드가 내가 필요로하는 것에 적합하다고 생각하지 않기 때문에 모든 것을 신선하게 시작하고 싶습니다.

나는 초심자이며, 몇 가지 코드를 보여주는 것보다 조금 더 설명합니다.

나는 당신이 내게 줄 수있는 어떤 도움을 기다리고 있습니다.

EDIT! - 아래 NEW CODE

-(IBAction) calculate:(id)sender { 
weightOne = 1; 
weightTwo = 0.75; 
weightThree = 0.50; 

mOne = [m1Text.text floatValue]; 
mTwo = [m2Text.text floatValue]; 
sOne = [s1Text.text floatValue]; 
sTwo = [s2Text.text floatValue]; 

resultOne = (mOne*weightOne) + (sOne*weightOne); 
resultTwo = (mTwo*weightTwo) + (sTwo*weightTwo); 

_resultTotal = (resultOne + resultTwo)/(weightOne*2 + weightTwo*2); 

NSString *resultString = [[NSString alloc] 
          initWithFormat: @"Gennemsnit %.2f", _resultTotal]; 
resultLabel.text = resultString; 

} 

내가 쉽게 입력을 계산하기 위해, 코드를 변경하기로 결정입니다. 이제 또 다른 질문이 있습니다.

어떤 식 으로든이 방정식을 저장할 수 있습니까? 코드를 몇 번이나 반복해서 입력하지 않고도 원하는만큼 여러 번 다시 사용할 수 있습니다.

+0

이 코드는 정상적으로 보입니다. 왜 그 코드에 만족하지 못하겠습니까? 입력이 많을 때 어떤 문제가 있습니까? – jrturton

+0

문제는 나중에 사용하기 위해 사용자 입력을 어떻게 저장할 수 있는지 모르겠다는 것입니다. 사용자는 그들이받는 수업의 양에 따라 15x2 텍스트 필드에 최대 30 개의 성적을 입력해야합니다. 그런 다음 성적을 쉽게 계산하고 결국 사용자에게 표시해야합니다. 나는 내가 지금까지 가지고있는 코드로 어떻게 그것을 수행하는지 불확실하다. –

답변

1

우선, 버튼을 누를 때 호출되는 IBAction 메서드를 계산할 수 있습니다. 프로토 타입을 -(IBAction)calculate:(id)sender으로 변경하십시오.

다음으로 텍스트 필드에 아울렛을 사용할 수 있다면 해를 끼치 지 않고 텍스트를 입력하는 데 어려움이 없습니다.

할 수있는 일은 올바른 입력을 확인하는 것입니다. [v1Text.text floatValue]은 텍스트에서 숫자를 가져 오는 올바른 표현입니다. intvalue을 살펴볼 수도 있습니다.

이제 계산을 완료하면 결과를 표시하려는 label/textfield에 대한 참조를 사용할 수 있습니다.

해당 레이블을 코드에서와 같이 정확하게 변경할 수 있습니다.

관련 문제