我正在制作转换器应用程序,并且在意识到要输入大约200行代码以使其转换超过5个单位后,我应该有一个更好的转换计算。改进计算代码
我目前有什么是一个ifelse,找出我从车轮中选择的单位,蜇找出它应该回答什么,并计算一个浮点数。它看起来像这样ATM:
#import "MainViewController.h"
@interface MainViewController()
@end
@implementation MainViewController;
@synthesize _convertFrom, _convertTo, _convertRates;
@synthesize inputText, picker, resultLabel;
- (void)viewDidLoad
{
[super viewDidLoad];
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_convertFrom = @[@"MTPA", @"MMcf/day",
@"Mill.Sm3/day", @"MMBTU", @"Boe/day"];
_convertRates = @[ @1.0f, @2.0f, @3.0f,
@4.0f, @5.0f];
_convertTo = @[@"MTPA", @"MMcf/day",
@"Mill.Sm3/day", @"MMBTU", @"Boe/day"];
_convertRates = @[ @1.0f, @2.0f, @3.0f,
@4.0f, @5.0f];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
//dont forget to put something in here later
}
-(IBAction)textFieldReturn:(id)sender
{
[sender resignFirstResponder];
}
-(IBAction)backgroundTouched:(id)sender
{
[inputText resignFirstResponder];
}
#pragma mark -
#pragma mark PickerView DataSource
- (NSInteger)numberOfComponentsInPickerView:
(UIPickerView *)pickerView
{
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent: (NSInteger)component
{
if (component == 0) {
return [_convertFrom count];
}
return [_convertTo count];
}
- (NSString *) pickerView: (UIPickerView *)pickerView
titleForRow:(NSInteger)row
forComponent:(NSInteger)component
{
if (component == 0) {
return [_convertFrom objectAtIndex:row];
}
return [_convertTo objectAtIndex:row];
}
#pragma mark -
#pragma mark PickerView Delegate
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
{
float convertFrom = [[_convertRates objectAtIndex:[pickerView selectedRowInComponent:0]] floatValue];
float convertTo = [[_convertRates objectAtIndex:[pickerView selectedRowInComponent:1]] floatValue];
float input = [inputText.text floatValue];
float to = convertTo;
float from = convertFrom;
float convertValue = input;
float MTPATilMTPAFloat = convertValue * 1;
float MTPATilMMScfdayFloat = convertValue * 133.425;
float MTPATilMillSm3dayFloat = convertValue * 3.779735;
float MTPATilMMBTUFloat = convertValue * 4;
float MTPATilboedayFloat = convertValue * 5;
float MMScfdayTilMTPAFloat = convertValue * 0.5;
float MMScfdayTilMMScfdayFloat = convertValue * 1;
float MMScfdayTilMillSm3dayFloat = convertValue * 6;
float MMScfdayTilMMBTUFloat = convertValue * 7;
float MMScfdayTilboedayFloat = convertValue * 8;
float MillSm3dayTilMTPAFloat = convertValue/1;
float MillSm3dayTilMMScfdayFloat = convertValue/2;
float MillSm3dayTilMillSm3dayFloat = convertValue/3;
float MillSm3dayTilMMBTUFloat = convertValue/4;
float MillSm3dayTilboedayFloat = convertValue/5;
float MMBTUTilMTPAFloat = convertValue * 2;
float MMBTUTilMMScfdayFloat = convertValue * 2;
float MMBTUTilMillSm3dayFloat = convertValue * 2;
float MMBTUTilMMBTUFloat = convertValue * 2;
float MMBTUTilboeday = convertValue * 2;
float boedayTilMTPAFloat = convertValue * 3;
float boedayTilMMScfdayFloat = convertValue * 3;
float boedayTilMillSm3dayFloat = convertValue * 3;
float boedayTilMMBTUFloat = convertValue * 3;
float boedayTilboeday = convertValue * 3;
NSString *MTPATilMTPA = [[NSString alloc ] initWithFormat:
@" %f MTPA = %f MTPA", convertValue, MTPATilMTPAFloat];
NSString *MTPATilMMScfday = [[NSString alloc ] initWithFormat:
@" %f MTPA = %f MMScf/day", convertValue, MTPATilMMScfdayFloat];
NSString *MTPATilMillSm3day = [[NSString alloc] initWithFormat:
@" %f MTPA = %f Mill.SM3/day", convertValue, MTPATilMillSm3dayFloat];
NSString *MTPATilMMBTU = [[NSString alloc] initWithFormat:
@" %f MTPA = %f MMBTU", convertValue, MTPATilMMBTUFloat];
NSString *MTPATilboeday = [[NSString alloc] initWithFormat:
@" %f MTPA = %f Boe/day", convertValue, MTPATilboedayFloat];
NSString *MMScfdayTilMTPA = [[NSString alloc] initWithFormat:
@" %f MMScfday = %f MTPA", convertValue, MMScfdayTilMTPAFloat];
NSString *MMScfdayTilMMScfday = [[NSString alloc] initWithFormat:
@" %f MMScfday = %f MMScfday", convertValue, MMScfdayTilMMScfdayFloat];
NSString *MMScfdayTilMillSm3day = [[NSString alloc] initWithFormat:
@" %f MMScfday = %f MillSm3day", convertValue, MMScfdayTilMillSm3dayFloat];
NSString *MMScfdayTilMMBTU = [[NSString alloc] initWithFormat:
@" %f MMScfday = %f MMBTU", convertValue, MMScfdayTilMMBTUFloat];
NSString *MMScfdayTilboeday = [[NSString alloc] initWithFormat:
@" %f MMScfday = %f Boe/day", convertValue, MMScfdayTilboedayFloat];
NSString *MillSm3dayTilMTPA = [[NSString alloc] initWithFormat:
@" %f MillSm3day = %f MTPA", convertValue, MillSm3dayTilMTPAFloat];
if (from == 1) {
if (to == 1) {
resultLabel.text = MTPATilMTPA;
}
else if (to == 2) {
resultLabel.text = MTPATilMMScfday;
}
else if (to == 3) {
resultLabel.text = MTPATilMillSm3day;
}
else if (to == 4) {
resultLabel.text = MTPATilMMBTU;
}
else if (to == 5) {
resultLabel.text = MTPATilboeday;
}
}
else if (from == 2) {
if (to == 1) {
resultLabel.text = MMScfdayTilMTPA;
}
else if (to == 2) {
resultLabel.text = MMScfdayTilMMScfday;
}
else if (to == 3) {
resultLabel.text = MMScfdayTilMillSm3day;
}
else if (to == 4) {
resultLabel.text = MMScfdayTilMMBTU;
}
else if (to == 5) {
resultLabel.text = MMScfdayTilboeday;
}
}
}
正如你所看到的,用的需要,如果我想更多的单位更多的代码,很多一个巨大的混乱。
当我意识到这一点,我试图通过使用commmon变量来计算它,我把所有东西都转换成了,然后再转换回输出单元。用长计算来思考它。我希望一切都被转换为第一个常见变量是米。所以1米= 1,1厘米= 0.01和1毫米= 0.001。所以,如果我想计算,我会用。
unitIwantToConvertToComparedTo1Meter = 0.5(1米) result = from * to * input * unitIwantToConvertToComparedTo1Meter。
其中,令人惊讶的是,工程。 这里所用:
#import "MainViewController.h"
@interface MainViewController()
@end
@implementation MainViewController;
@synthesize _convertFrom, _convertTo, _convertRates;
@synthesize inputText, picker, resultLabel;
- (void)viewDidLoad
{
[super viewDidLoad];
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_convertFrom = @[@"Kubikk M", @"Kubikk CM",
@"Kubikk MM", @"MMBTU", @"Boe/day"];
_convertRates = @[ @1.0f, @0.01f, @0.001f,
@4.0f, @5.0f];
_convertTo = @[@"Kubikk M", @"Kubikk CM",
@"Kubikk MM", @"MMBTU", @"Boe/day"];
_convertRates = @[ @1.0f, @0.01f, @0.001f,
@4.0f, @5.0f];
}
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
//dont forget to put something in here later
}
-(IBAction)textFieldReturn:(id)sender
{
[sender resignFirstResponder];
}
-(IBAction)backgroundTouched:(id)sender
{
[inputText resignFirstResponder];
}
#pragma mark -
#pragma mark PickerView DataSource
- (NSInteger)numberOfComponentsInPickerView:
(UIPickerView *)pickerView
{
return 2;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component
{
if (component == 0) {
return [_convertFrom count];
}
return [_convertTo count];
}
- (NSString *) pickerView: (UIPickerView *)pickerView
titleForRow:(NSInteger)row
forComponent:(NSInteger)component
{
if (component == 0) {
return [_convertFrom objectAtIndex:row];
}
return [_convertTo objectAtIndex:row];
}
#pragma mark -
#pragma mark PickerView Delegate
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
{
float convertFrom = [[_convertRates objectAtIndex:[pickerView selectedRowInComponent:0]] floatValue];
float convertTo = [[_convertRates objectAtIndex:[pickerView selectedRowInComponent:1]] floatValue];
float input = [inputText.text floatValue];
float to = convertTo;
float from = convertFrom;
float convertValue = input;
float kubikkfot = 0.1;
float result = from * convertValue * kubikkfot;
NSString *resultString = [[NSString alloc ] initWithFormat:
@" %f MTPA = %f MTPA", convertValue, result];
resultLabel.text = resultString;
}
的问题,这是 1.我的大脑是有一个危机,试图找出如何 2.我想有一个自定义标签每一个答案,在那里说什么我从单位转换而来。我怎样才能实现这个?
那么,谁能给我一个更好的计算代码?
这可能更好在http://codereview.stackexchange.com/ – Abizern
这两个代码示例看起来是相同的,除了数组中的实际值。 – David
大卫看起来更进一步:) Abizern K thx –