2016-05-02 2 views
2

J'apprends toujours les principes de base de C# et je suis actuellement occupé par du code qui m'a bloqué dans une boucle infinie.C# While Infinite Loop

do 
    { 
     Console.Write("Please enter the Exam mark for student " + (index + 1) + ": "); 
     Exam[index] = double.Parse(Console.ReadLine()); 

     Console.Write("Please enter the DP for student " + (index + 1) + ": "); 
     DP[index] = double.Parse(Console.ReadLine()); 

     Final[index] = (DP[index] + Exam[index])/2; 

      index++; 
    } while (DP[index] != 999); 

Le code ne se casse pas quand je tape 999.

+0

En utilisant un débogueur, un problème comme celui-ci peut être résolu en moins de temps qu'il a fallu pour écrire la question. – Phil1970

Répondre

4

Vous augmentez l'indice avec 1 juste avant la condition while est cochée. Je suppose que la valeur est 0 sur cet indice ...

Une solution peut être de se rappeler la valeur précédente dans une variable, ou soustraire un de l'index:

} while (DP[index - 1] != 999); 

Un autre problème pourrait être l'utilisation de un double, car il est imprécis, il ne correspond pas toujours à 999 si vous avez entré cette valeur. Si vous le pouvez, utilisez int ou decimal.

+3

Ou simplement augmenter le 'index' en utilisant' while (DP [index ++]! = 999); 'qui sera exécuté APRÈS la condition actuelle. – HimBromBeere

+0

Merci beaucoup Patrick! C'était parfait. – Mavric