Не домашнее задание .. Так что у меня есть простая консольная программа для чтения экзаменов и распечатки среднего и класса. До сих пор это:Sentinel контролируется в то время как петли C#
public static void Main()
{
int sum = 0;
int count = 0;
double average = 0;
Console.WriteLine ("Enter all your exam scores one by one. When finished, enter -99");
string scores = Console.ReadLine();
while (scores != "-99") {
sum += int.Parse (scores);
count++;
scores = Console.ReadLine();
}
if (scores == "-99") {
average = sum/count;
if (average >= 90)
Console.WriteLine ("Your average score is {0}. This is good for a letter grade of A", average);
Console.WriteLine(....more scores etc...);
Теперь я хочу проверить недействительные записи с помощью TryParse. Я думал, что я бы придерживаться в другом цикле в то время как раньше другого и изменить оригинал так:
Console.WriteLine ("Enter all your exam scores one by one. When finished, enter -99");
string scores = Console.ReadLine();
while (int.TryParse(scores, out numbers) == false){
Console.WriteLine("Please enter a valid integer")
scores = Console.ReadLine();
sum += int.Parse(scores);
count++;
}
while (scores != "-99" && int.TryParse(scores, out numbers) == true) {
sum += int.Parse (scores);
count++;
scores = Console.ReadLine();
}
if (scores == "-99") {
average = sum/count;
if (average >= 90)
Console.WriteLine ("Your average score is {0}. This is good for a letter grade of A", average); ...etc...
Проблема здесь состоит в том, что если пользователь вводит действительные записи на первом, а затем вводит недопустимый один, компилятор не может вернуться к первому циклу while для проверки недопустимой записи. Поэтому я попытался поменять позиции циклов while. Но это имеет тот же эффект; он не может вернуться к первому циклу while для проверки допустимых записей после ввода недопустимого значения. Ответ, скорее всего, простой, но я застрял.
Просто будьте осторожны, если пользователь вводит -99 во вторую попытку, так как вам нужно будет вырваться из обеих петель. Я не включил, как это сделать в моем примере выше. – JNYRanger