viewDidLoad становится бесконечным циклом. ПОМОГИТЕ - PullRequest
0 голосов
/ 01 июня 2011

Вероятно, это самый простой / слабый вопрос.

Поэтому я пытаюсь инициализировать массив со значениями от 0 до 3 с шагом 0,25 в методе viewDidLoad, и здесь я вижу бесконечный цикл.

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 //

Ответы [ 3 ]

3 голосов
/ 01 июня 2011

Ваш 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.
 }
0 голосов
/ 01 июня 2011

используйте float вместо int.

, поскольку каждый раз значение выражения i + 0,25 => (0 + 0,25) => 0,25.

i = i+0.25;

Теперь выприсваиваем значение 0,25 целому числу , поэтому оно становится 0 каждый раз, и условие в while никогда не будет ложным с 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.
 }
0 голосов
/ 01 июня 2011

я int.Поэтому 0+0.25 = 0.

...