黑马程序员技术交流社区
标题: 求助,为什么不出现想要的结果 [打印本页]
作者: bdw9005 时间: 2015-9-10 07:12
标题: 求助,为什么不出现想要的结果
一个人可以吃不同的食物,只要吃东西就会增加体重0.6,如果 要是出门遛弯,每走100步,体重减0.2,小于100步忽略不计。 请用面向对象思想实现。
思路;
类名:Person
属性:年龄(_age)、体重(_weight)
动作:吃饭(eat)方法、散步(walk)方法- #import<Foundation/Foundation.h>
- @interface Person : NSObject {
- @public
- int _age;////数据类型 _实例变量名
- float _weight;
- }
- -(float) eat:(int)x ;//有参方法的声明
- -(float) walk:(int)x;
- @end
- @implementation Person
- //方法名 eat:
- - (float) eat:(int)x{
- //只要吃东西就会增加体重0.6,
- _weight+=0.6*x;
- return _weight;
- }
- //方法名 walk:
- -(float)walk:(int)x{
- //每走100步,体重减0.2,小于100步忽略不计。
- if(x>100)_weight-=0.2*x;
- return _weight;
-
- }
- @end
- int main(){
- @autoreleasepool {
- //创建对象
- Person *person= [Person new];
- //对象访问实例变量
- person->_weight=100;
- //调用有参的方法
- int eatWeight=[person eat:1];
- int walkWeight=[person walk:2];
- NSLog(@"eatWeight=%f,walkWeight=%f",eatWeight,walkWeight);
- }
- return 0;
- }
复制代码
作者: lixj1991 时间: 2015-9-10 13:47
第20行。
if(x>100)_weight-=0.2*x;
是不是想说
_weight-=0.2*x/100;
因为是每走100步才体重减少0.2的。
再有_weight由于是float型,是不是初始化的时候写100.0更好一点。
作者: 翟宇浩 时间: 2015-9-10 14:17
楼上说的是对的, _weight-=0.2*x/100;
初始化 _weight 是,由于是 float 类型,所以 person->_weight=100.0f;
int walkWeight=[person walk:200];
作者: tangbinbin 时间: 2015-9-10 17:44
写的太复杂了感觉,你的返回值和参数类型有点问题,float类型的只后面加f。
#import <Foundation/Foundation.h>
//类的声明
@interface Person : NSObject{
@public
//属性
int _age;
float _weight;
}
-(void)eat:(NSString*) foodName;
-(void)walk:(int) num;
@end
//类的实现
@implementation Person
-(void)eat:(NSString*) foodName{
_weight+=0.6f;
NSLog(@"人吃了%@,当前体重:%.2f",foodName,_weight);
}
-(void)walk:(int) num{
_weight-=num/100*0.2;
NSLog(@"人走了%d,当前体重:%.2f",num,_weight);
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 创建对象
Person *person=[Person new];
person->_age=18;
person->_weight=55;
[person eat:@"红烧狮子头"];
[person walk:280];
}
return 0;
}
作者: bustle 时间: 2015-9-10 18:44
很好,很漂亮的代码。感觉不需要返回值啊。
作者: bdw9005 时间: 2015-9-10 19:15
很感谢,20行忘记了除以100,而且还有36和37行的代码应为float类型
作者: bdw9005 时间: 2015-9-10 19:19
本帖最后由 bdw9005 于 2015-9-10 19:34 编辑
很感谢,20行忘记了除以100,而且还有36和37行的eatWeight以及walkWeight应为float类型
作者: bdw9005 时间: 2015-9-10 19:22
20行忘记了除以100,而且还有36和37行的eatWeight以及walkWeight应为float类型是这些地方出问题的,太感谢了
作者: bdw9005 时间: 2015-9-10 19:37
很感谢,20行忘记了除以100,而且还有36和37行的eatWeight以及walkWeight应为float类型,我也感觉有点冗余的感觉,不过现阶段还没达到那种写简单的功力
作者: bdw9005 时间: 2015-9-10 19:38
果然不需要返回值
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |