好吧,這將是有點長,我爲此道歉,但在這裏。float vlaue返回0?
我正在使用的應用程序是一個「健身」應用程序,可以計算人體脂肪百分比。它有一個男性的一面和一個女性的一面。
我有3班男性和3班女性。
maleBFCinput
maleBFCdata
maleBFCresults
femaleBFCinput
femaleBFCdata
femaleBFCresults
在輸入類中,我有用於用戶輸入的textfields,在「maleBFCinput.m」中進行計算。計算完成後,它們被轉移到「數據」類,然後轉移到「結果」類。
男方完美無瑕。然而,女性方面是問題所在。在results.xib我有7個標籤。年齡/身高/體重/最低體重/最大體重/體脂/允許身體脂肪。
女性結果上的「bodyfat」標籤返回0。使用相同的技術,我用來計算男性方面,它的工作原理,我一直得到0.
我在輸入屏幕上使用浮動來保存所有的「tempvalues」從較小的計算,然後去進入「身體脂肪計算」。
下面是我的代碼小snipets。
femaleBFCinput.h
UITextField *ageInput;
UITextField *heightInput;
UITextField *weightInput;
UITextField *hips1Input;
UITextField *hips2Input;
UITextField *hips3Input;
UITextField *neck1Input;
UITextField *neck2Input;
UITextField *neck3Input;
UITextField *abdomen1Input;
UITextField *abdomen2Input;
UITextField *abdomen3Input;
float heightFactor;
float weightFactor;
float abHipsFactor;
float abFactor;
float neckFactor;
float minWeight;
float maxWeight;
float maxBodyFatPercentage;
float abdomenAvg;
float neckAvg;
float hipsAvg;
float abHipsValue;
float abNeckSubValue;
float bodyFatPercentage;
float circumferenceValue;
}
@property(nonatomic,retain) IBOutlet UITextField *ageInput;
@property(nonatomic,retain) IBOutlet UITextField *weightInput;
@property(nonatomic,retain) IBOutlet UITextField *heightInput;
@property(nonatomic,retain) IBOutlet UITextField *abdomen1Input;
@property(nonatomic,retain) IBOutlet UITextField *abdomen2Input;
@property(nonatomic,retain) IBOutlet UITextField *abdomen3Input;
@property(nonatomic,retain) IBOutlet UITextField *neck1Input;
@property(nonatomic,retain) IBOutlet UITextField *neck2Input;
@property(nonatomic,retain) IBOutlet UITextField *neck3Input;
@property(nonatomic,retain) IBOutlet UITextField *hips1Input;
@property(nonatomic,retain) IBOutlet UITextField *hips2Input;
@property(nonatomic,retain) IBOutlet UITextField *hips3Input;
- (float) getMinWeight;
- (float) getMaxWeight;
- (float) getCircumferenceValue;
- (float) getMaxBodyFatPercentage;
- (float) getAbdomenAvg;
- (float) getNeckAvg;
- (float) getAbHipsFactor;
- (float) getBodyFatPercentage;
- (float) getHipsAvg;
femaleBFCinput.m
// Get Abdomen Avg..
- (float) getAbdomenAvg
{
float abdomen1Float = [abdomen1Input.text floatValue];
float abdomen2Float = [abdomen2Input.text floatValue];
float abdomen3Float = [abdomen3Input.text floatValue];
(abdomenAvg = ((abdomen1Float + abdomen2Float + abdomen3Float)/3));
return abdomenAvg;
}
// Get Neck Avg..
- (float) getNeckAvg
{
float neck1Float = [neck1Input.text floatValue];
float neck2Float = [neck2Input.text floatValue];
float neck3Float = [neck3Input.text floatValue];
(neckAvg = ((neck1Float + neck2Float + neck3Float)/3));
return neckAvg;
}
// Get Hips Avg..
- (float) getHipsAvg
{
float hips1Float = [hips1Input.text floatValue];
float hips2Float = [hips2Input.text floatValue];
float hips3Float = [hips3Input.text floatValue];
(hipsAvg = ((hips1Float + hips2Float + hips3Float)/3));
return hipsAvg;
}
//-----Get AbNeck Factor----------------------------------
- (float) getAbHipsFactor
{
float abTempAvg = [self getAbdomenAvg];
float hipsTempAvg = [self getHipsAvg];
(abHipsValue = (abTempAvg + hipsTempAvg));
return abHipsValue;
}
//----Get Circumference Value-----------------------------
- (float) getCircumferenceValue
{
(circumferenceValue = (abHipsValue - neckAvg));
return circumferenceValue;
}
// Get Body Fat Percentage..
- (float) getBodyFatPercentage
{
float circumferenceTempValue = [self getCircumferenceValue];
float heightTempValue = [heightInput.text floatValue];
if (heightTempValue >= 58.00 && heightTempValue <= 58.49) {
if (circumferenceTempValue >= 45.00 && circumferenceTempValue <= 45.49) {bodyFatPercentage = 19;}
else if (circumferenceTempValue >= 45.50 && circumferenceTempValue <= 45.99) {bodyFatPercentage = 20;}
else if (circumferenceTempValue >= 46.00 && circumferenceTempValue <= 46.49) {bodyFatPercentage = 21;}
else if (circumferenceTempValue >= 46.50 && circumferenceTempValue <= 46.99) {bodyFatPercentage = 21;}
else if (heightTempValue >= 77.50 && heightTempValue <= 77.99) {
if (circumferenceTempValue >= 53.50 && circumferenceTempValue <= 53.99) {bodyFatPercentage = 19;}
else if (circumferenceTempValue >= 54.00 && circumferenceTempValue <= 54.49) {bodyFatPercentage = 20;}
else if (circumferenceTempValue >= 54.50 && circumferenceTempValue <= 54.99) {bodyFatPercentage = 20;}
else if (circumferenceTempValue >= 55.00 && circumferenceTempValue <= 55.49) {bodyFatPercentage = 21;}
etc..
etc.. (theres about 4000ish lines of if/else if statements in here so i just pasted a few so you see what i have)
else if (circumferenceTempValue >= 77.50 && circumferenceTempValue <= 77.99) {bodyFatPercentage = 45;}
else if (circumferenceTempValue >= 78.00 && circumferenceTempValue <= 78.49) {bodyFatPercentage = 46;}
else if (circumferenceTempValue >= 78.50 && circumferenceTempValue <= 78.99) {bodyFatPercentage = 46;}
else if (circumferenceTempValue >= 79.00 && circumferenceTempValue <= 79.49) {bodyFatPercentage = 47;}
}
return bodyFatPercentage;
}
- (IBAction)calculate:(id)sender {
FemaleBFCresults *femaleBFCresults = [[FemaleBFCresults alloc] initWithNibName:@"FemaleBFCresults" bundle:nil];
FemaleBFCdata *femaleBFCData = [[FemaleBFCdata alloc] init];
femaleBFCresults.femaleBFCdata = femaleBFCData;
femaleBFCresults.femaleBFCdata.ageInput = ageInput.text;
femaleBFCresults.femaleBFCdata.heightInput = heightInput.text;
femaleBFCresults.femaleBFCdata.weightInput = weightInput.text;
NSString *minWeightString = [[NSString alloc] initWithFormat:@"%.0f", [self getMinWeight]];
femaleBFCresults.femaleBFCdata.minWeight = minWeightString;
[minWeightString release];
NSString *maxWeightString = [[NSString alloc] initWithFormat:@"%.0f", [self getMaxWeight]];
femaleBFCresults.femaleBFCdata.maxWeight = maxWeightString;
[maxWeightString release];
NSString *maxBodyFatString = [[NSString alloc] initWithFormat:@"%.0f", [self getMaxBodyFatPercentage]];
femaleBFCresults.femaleBFCdata.maxBodyFat = maxBodyFatString;
[maxBodyFatString release];
NSString *bodyFatString = [[NSString alloc] initWithFormat:@"%.0f", [self getBodyFatPercentage]];
femaleBFCresults.femaleBFCdata.bodyFat = bodyFatString;
[bodyFatString release];
femaleBFCresults.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[self presentModalViewController:femaleBFCresults animated:YES];
[self.view removeFromSuperview];
[femaleBFCresults release];
}
femaleBFCdata.h
@interface FemaleBFCdata : NSObject {
NSString *ageInput;
NSString *heightInput;
NSString *weightInput;
NSString *neckAvg;
NSString *abAvg;
NSString *hipsAvg;
NSString *abHipFactor;
NSString *bodyFat;
NSString *maxBodyFat;
NSString *minWeight;
NSString *maxWeight;
NSString *circumference;
}
@property (nonatomic, retain) NSString *ageInput;
@property (nonatomic, retain) NSString *heightInput;
@property (nonatomic, retain) NSString *weightInput;
@property (nonatomic, retain) NSString *neckAvg;
@property (nonatomic, retain) NSString *abAvg;
@property (nonatomic, retain) NSString *hipsAvg;
@property (nonatomic, retain) NSString *abHipFactor;
@property (nonatomic, retain) NSString *bodyFat;
@property (nonatomic, retain) NSString *maxBodyFat;
@property (nonatomic, retain) NSString *minWeight;
@property (nonatomic, retain) NSString *maxWeight;
@property (nonatomic, retain) NSString *circumference;
femaleBFCdata.m
@synthesize ageInput;
@synthesize heightInput;
@synthesize weightInput;
@synthesize neckAvg;
@synthesize abAvg;
@synthesize hipsAvg;
@synthesize abHipFactor;
@synthesize bodyFat;
@synthesize maxBodyFat;
@synthesize minWeight;
@synthesize maxWeight;
@synthesize circumference;
- (void)dealloc {
self.ageInput = nil;
self.heightInput = nil;
self.weightInput = nil;
self.neckAvg = nil;
self.abAvg = nil;
self.hipsAvg = nil;
self.abHipFactor = nil;
self.bodyFat = nil;
self.maxBodyFat = nil;
self.minWeight = nil;
self.maxWeight = nil;
self.circumference = nil;
[super dealloc];
}
femaleBFCresults.h
@interface FemaleBFCresults : UIViewController {
FemaleBFCdata *femaleBFCdata;
UILabel *displayAge;
UILabel *displayHeight;
UILabel *displayWeight;
UILabel *displayBodyFat;
UILabel *displayMaxBodyFat;
UILabel *displayMinWeight;
UILabel *displayMaxWeight;
}
@property (nonatomic, retain) FemaleBFCdata *femaleBFCdata;
@property (nonatomic, retain) IBOutlet UILabel *displayAge;
@property (nonatomic, retain) IBOutlet UILabel *displayHeight;
@property (nonatomic, retain) IBOutlet UILabel *displayWeight;
@property (nonatomic, retain) IBOutlet UILabel *displayBodyFat;
@property (nonatomic, retain) IBOutlet UILabel *displayMaxBodyFat;
@property (nonatomic, retain) IBOutlet UILabel *displayMinWeight;
@property (nonatomic, retain) IBOutlet UILabel *displayMaxWeight;
- (IBAction)goBack:(id)sender;
@end
femaleBFCdata.m
@synthesize femaleBFCdata;
@synthesize displayAge;
@synthesize displayHeight;
@synthesize displayWeight;
@synthesize displayBodyFat;
@synthesize displayMaxBodyFat;
@synthesize displayMinWeight;
@synthesize displayMaxWeight;
- (void)viewDidLoad {
self.displayAge.text = femaleBFCdata.ageInput;
self.displayHeight.text = femaleBFCdata.heightInput;
self.displayWeight.text = femaleBFCdata.weightInput;
self.displayBodyFat.text = femaleBFCdata.bodyFat;
self.displayMaxBodyFat.text = femaleBFCdata.maxBodyFat;
self.displayMinWeight.text = femaleBFCdata.minWeight;
self.displayMaxWeight.text = femaleBFCdata.maxWeight;
[super viewDidLoad];
}
- (void)dealloc {
[displayAge dealloc];
[displayHeight dealloc];
[displayWeight dealloc];
[displayBodyFat dealloc];
[displayMaxBodyFat dealloc];
[displayMinWeight dealloc];
[displayMaxWeight dealloc];
[super dealloc];
}
就像我說的這是做完全相同的方式,這是男性類作品完美。但在女性班上,我一直在結果班上獲得0回報,我似乎無法弄清楚爲什麼。我已經在這裏工作了幾個月了。我休息了幾個星期,我想我有這個工作之前,我休息一下,但我想我沒有。任何人有任何想法可以幫助我解決這個問題嗎?
是的,他們都是相連的,這就是爲什麼它把我扔掉。我只是再次檢查確認,他們連接.. – 2011-04-02 16:30:42
你有沒有在調試器中的代碼,並驗證每個輸入和輸出是你期望它? – 2011-04-02 16:31:47
不,我沒有得到任何類型的錯誤,所以我沒想到我需要..我甚至不知道如何使用調試器是誠實的。這是我第一次使用xcode,所以仍然很多我必須學習它 – 2011-04-02 16:34:48