#c#
#c#
Вопрос:
static void getGrades()
{
Console.WriteLine("How many grade level classes are you taking?");
int standardNumber = int.Parse(Console.ReadLine());
Console.WriteLine();
Console.WriteLine("How many honors level classes are you taking?");
int honorsNumber = int.Parse(Console.ReadLine());
Console.WriteLine();
Console.WriteLine("How many AP level classes are you taking?");
int apNumber = int.Parse(Console.ReadLine());
Console.WriteLine();
Console.WriteLine("Enter your letter grades when prompted.");
Console.WriteLine("=======================================");
for (int a = 1; a == standardNumber; a )
{
int num = 1;
Console.WriteLine("Enter letter grade for honors class {0}:", num);
switch (num)
{
case 1:
string class1 = Console.ReadLine();
break;
case 2:
string class2 = Console.ReadLine();
break;
case 3:
string class3 = Console.ReadLine();
break;
case 4:
string class4 = Console.ReadLine();
break;
default:
break;
}
Console.WriteLine();
}
}
Я пытаюсь вызвать этот метод для сбора количества классов и букв классов из сочетания 4 классов. Когда я вызываю метод, первая часть (ниже) выполняется нормально.
Console.WriteLine("How many grade level classes are you taking?");
int standardNumber = int.Parse(Console.ReadLine());
Console.WriteLine();
Console.WriteLine("How many honors level classes are you taking?");
int honorsNumber = int.Parse(Console.ReadLine());
Console.WriteLine();
Console.WriteLine("How many AP level classes are you taking?");
int apNumber = int.Parse(Console.ReadLine());
Однако остальная часть кода (ниже) не выполняется.
Console.WriteLine();
Console.WriteLine("Enter your letter grades when prompted.");
Console.WriteLine("=======================================");
for (int a = 1; a == standardNumber; a )
{
int num = 1;
Console.WriteLine("Enter letter grade for honors class {0}:", num);
switch (num)
{
case 1:
string class1 = Console.ReadLine();
break;
case 2:
string class2 = Console.ReadLine();
break;
case 3:
string class3 = Console.ReadLine();
break;
case 4:
string class4 = Console.ReadLine();
break;
default:
break;
}
Console.WriteLine();
}
}
Кто-нибудь знает, почему это может происходить. Заранее спасибо
Комментарии:
1. что вы пытаетесь здесь сделать?
2. Я пытаюсь получить количество классов каждого типа (например, 2 класса с отличием и 2 класса ap), а затем использовать цикл, чтобы получить буквенную оценку из любого числа этого класса.
Ответ №1:
Согласно вашей логике, если вы введете ввод standardNumber
только как 1, он будет запускать эти строки,
for (int a = 1; a == standardNumber; a )
{
int num = 1;
}
кстати, для этого вам не нужен цикл for.
Редактировать:
Вам нужно сохранить входные данные в коллекции и выполнить цикл для этого
static void Main(string[] args)
{
List<int> inputs = new List<int>();
Console.WriteLine("How many grade level classes are you taking?");
int standardNumber = int.Parse(Console.ReadLine());
inputs.Add(standardNumber);
Console.WriteLine();
Console.WriteLine("How many honors level classes are you taking?");
int honorsNumber = int.Parse(Console.ReadLine());
inputs.Add(honorsNumber);
Console.WriteLine();
Console.WriteLine("How many AP level classes are you taking?");
int apNumber = int.Parse(Console.ReadLine());
inputs.Add(apNumber);
Console.WriteLine();
Console.WriteLine("Enter your letter grades when prompted.");
Console.WriteLine("=======================================");
for (int i = 0; i < inputs.Count; i )
{
Console.WriteLine("Enter letter grade for honors class {0}:", inputs[i]);
switch (i)
{
case 1:
string class1 = Console.ReadLine();
break;
case 2:
string class2 = Console.ReadLine();
break;
case 3:
string class3 = Console.ReadLine();
break;
case 4:
string class4 = Console.ReadLine();
break;
default:
break;
}
Console.WriteLine();
}
Console.Read();
}
Ответ №2:
Ваш метод содержит эти две строки подряд:
int apNumber = int.Parse(Console.ReadLine());
Console.WriteLine();
Есть два способа, с помощью которых возможно выполнить первую строку, но вторая строка не выполняется:
- Вызов метода
Console.ReadLine()
никогда не возвращается, потому что пользователь никогда не нажимает «ввод». - Либо метод
Console.ReadLine
, либо методint.Parse
генерируют исключение.
Я предполагаю, что int.Parse
это создает исключение.
Более теоретический ответ:
Если я не ошибаюсь, когда выполняется код, который я процитировал, всегда должно происходить одно из следующих действий, несмотря ни на что:
- Первая строка продолжает выполняться вечно.
- Первая строка выдает исключение.
- Поток завершается до выполнения второй строки.
- Первая строка возвращает, а вторая строка выполняется.
Если последнее не происходит, должно произойти что-то другое.