复杂计算

时间:2013-07-02 02:41:46

标签: objective-c nsstring textfield xcode4.6.3

我有一段时间让这段代码正确地摆脱出来。我目前卡在最后一行文字中。我是新手一起编写代码。我所学到的一切都是通过网站和网站找到的。请参阅下面带下划线的注释。请帮忙,我可以看看我的计算是否有效...

//.h


@interface ViewController : UIViewController

@property (weak, nonatomic) IBOutlet UITextField *Price87;
@property (weak, nonatomic) IBOutlet UITextField *MPG87;
@property (weak, nonatomic) IBOutlet UITextField *PriceE85;
@property (weak, nonatomic) IBOutlet UITextField *MPGE85;
@property (weak, nonatomic) IBOutlet UITextField *GasTankSize;

- (IBAction)Settings:(id)sender;
- (IBAction)pergallon:(id)sender;
- (IBAction)pertank:(id)sender;

@end


//.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController   <-----------  Getting a Incomplete Implementation here...

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)Settings:(id)sender {
    Settings *settings = [[Settings alloc] initWithNibName:nil bundle:nil];
    [self presentViewController:settings animated:YES completion:NULL];
}

- (IBAction)addNums:(id)sender {
    int a = ([_Price87.text floatValue]);
    int b = ([_MPG87.text floatValue]);
    int c = ([_PriceE85.text floatValue]);
    int d = ([_MPGE85.text floatValue]);
    int e = ([_GasTankSize.text floatValue]);
    int ans = ((a*e)-((e+(a*e)-(c*e)/b)*d)/e);

    [ans setText:[NSString stringWithFormat:@"%i", pergallon]];   <---------  This is the line giving me trouble.  I'm getting a "use of undeclaired identifier 'pergallon'

}

@end

2 个答案:

答案 0 :(得分:0)

您需要先使用float或double数据类型声明变量,然后才能使用它。

尝试用

声明它
@property (nonatomic) float pergallon;

答案 1 :(得分:0)

你有很多错误,请考虑:

int a = ([_Price87.text floatValue]);

在右侧大小上,您使用floatValue - 带有小数部分的浮点数,但在左侧大小上,您将a声明为int - 整数没有任何小数部分。该分配将截断丢弃小数部分的数字,例如, 1.82将成为1.这可能不是你想要的。您的意思是将a声明为float吗?

但是,让我们看看你的数学和单位 - 根据你给你的字段命名。

a大概是$ / gal,e是加仑,所以a*e是$(填充油箱的价格)。让我们将单位放在等式中:

e+(a*e) => gal + $

现在添加加仑和美元是没有意义的 - 你会得到一个数字,但它是一个无意义的数字。表达的其余部分也没什么意义。

编译器不会发现任何上述内容,计算机是快速白痴 - 要求他们计算废话并且他们会这样做。

计算机将发现的是简单的错误。它抱怨的行是pergallon,它不存在。您可能打算使用ans。虽然修复可能会让编译器感到高兴,但它无法解决您的单元问题,您需要弄清楚数学。

HTH。