Это часть кода, он получает строку чисел из текстового файла и подсчитывает, сколько чисел помещается в каждый указанный диапазон. Я конвертирую его из операторов if, else if (которые отлично работают) просто для практики. Однако ни одно из чисел не считается, кроме 1, самого большого числа в текстовом файле, которое соответствует значению по умолчанию для этого переключателя. Где я ошибся?
int i = 0;
switch (students[i].Grade)
{
case 1:
{
if(students[i].Grade <= 59)
distributions[0] += 1;
break;
}
case 2:
{
if(students[i].Grade >= 60 && students[i].Grade <= 69)
distributions[1] += 1;
break;
}
case 3:
{
if(students[i].Grade >= 70 && students[i].Grade <= 79)
distributions[2] += 1;
break;
}
case 4:
{
if (students[i].Grade >= 80 && students[i].Grade <= 89)
distributions[3] += 1;
break;
}
// students with grade of 90 or above
default:
{
distributions[4] += 1;
break;
}
}
Console.WriteLine("0-59: {0}\n60-69: {1}\n70-79: {2}\n80-89: {3}\n90-100: {4}", distributions[0], distributions[1], distributions[2], distributions[3], distributions[4]);
это код, использующий операторы if else if, работает нормально.
for (int i = 0; i < students.Length; i++)
if (students[i].Grade <= 59)
{
distributions[0] += 1;
}
else if (students[i].Grade >= 60 && students[i].Grade <= 69)
{
distributions[1] += 1;
}
else if (students[i].Grade >= 70 && students[i].Grade <= 79)
{
distributions[2] += 1;
}
else if (students[i].Grade >= 80 && students[i].Grade <= 89)
{
distributions[3] += 1;
}
//students with grade of 90 or above
else
{
distributions[4] += 1;
}
Console.WriteLine("0-59: {0}\n60-69: {1}\n70-79: {2}\n80-89: {3}\n90-100: {4}", distributions[0], distributions[1], distributions[2], distributions[3], distributions[4]);
if
или если вы используете хотя бы C # 7, вы можете использовать переключить, когда. - person Tim Schmelter   schedule 15.05.2021