2016-05-02 3 views
2

Я все еще изучаю основы C#, и в настоящее время я занят некоторым кодом, который заставил меня застрять в бесконечном цикле.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); 

код не сломаться, когда я типа 999.

+0

Использование отладчика, проблема, подобная этой, может быть исправлена ​​за меньшее время, которое потребовалось, чтобы написать вопрос. – Phil1970

ответ

4

Вы повышаете индекс с 1 непосредственно перед условием while проверяется. Я предполагаю, что значение 0 по этому индексу ...

Решение может быть вспомнить предыдущее значение в переменной, или вычесть один из индекса:

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

Еще одна проблема может быть использование двойной, поскольку он неточен, он не всегда соответствует 999, если вы ввели это значение. Если вы можете, используйте int или decimal.

+3

Или просто увеличивайте 'index', используя' while (DP [index ++]! = 999); 'который будет выполнен ПОСЛЕ фактического состояния. – HimBromBeere

+0

Спасибо, Патрик! Это было прекрасно. – Mavric