0

这可能是最简单/最蹩脚的问题。

所以我试图在 viewDidLoad 方法中初始化一个值为 0 到 3 个增量为 0.25 的数组,我可以在这里看到一个无限循环。

NSArray *pickArray3 = [[NSMutableArray alloc] init];
int i = 0;
//for(i = 0.25; i<=3; i=i+0.25) 
while (i<3)
{ 
//NSString *myString = [NSString stringWithFormat:@"%d", i]; 
    i=i+0.25;
    NSLog(@"The Value of i is %d", i );
//[pickArray3 addObject:myString]; // Add the string to the tableViewArray.
 }
NSLog(@"I am out of the loop now");
self.doseAmount=pickArray3;
[pickArray3 release];

这就是输出。

   2011-06-01 11:49:30.089 Tab[9837:207] The Value of i is 0
   2011-06-01 11:49:30.090 Tab[9837:207] The Value of i is 0
   2011-06-01 11:49:30.091 Tab[9837:207] The Value of i is 0
   2011-06-01 11:49:30.092 Tab[9837:207] The Value of i is 0
   // And this goes on //   
   // I am out of the loop now does not get printed //
4

3 回答 3

3

你的 i 是一个整数,它永远不会增加 0.25。使用浮点数或双精度数。

**float** i = 0;
//for(i = 0.25; i<=3; i=i+0.25) 
while (i<3)
{ 
//NSString *myString = [NSString stringWithFormat:@"**%f**", i]; 
    i=i+0.25;
    NSLog(@"The Value of i is **%f**", i );
//[pickArray3 addObject:myString]; // Add the string to the tableViewArray.
 }
于 2011-06-01T15:58:06.917 回答
0

我是一个整数。因此0+0.25 = 0

于 2011-06-01T15:58:31.540 回答
0

使用float而不是int.

因为每次表达式值 i+0.25 => (0 + 0.25) => 0.25。

i = i+0.25;

现在您将值 0.25 分配给整数,因此它每次都变为 0 并且条件 inwhile 永远不会是假的 0 ,所以它进入无限循环

所以你的代码必须是

float i = 0;
//for(i = 0.25; i<=3; i=i+0.25) 
while (i<3)
{ 
//NSString *myString = [NSString stringWithFormat:@"%d", i]; 
    i=i+0.25;
    NSLog(@"The Value of i is %f", i );
//[pickArray3 addObject:myString]; // Add the string to the tableViewArray.
 }
于 2011-06-01T15:58:38.167 回答