所以,我对整个C#语言都不熟悉,有人要求我们将简单的if if转换为开关。这就是我所知道的。这是对的吗?如果没有,你能告诉我问题在哪里吗?还是缺少什么?这里唯一的问题是开关盒的输出没有出现。
static void Main(string[] args)
{
Console.Write("Enter Name: ");
string studname = Console.ReadLine();
Console.Write("Enter Age: ");
string age = Console.ReadLine();
Console.Write("Enter Year Level: ");
int level = int.Parse(Console.ReadLine());
Console.Write("Enter Course: ");
string course = Console.ReadLine();
Console.Write("Enter Score 1: ");
int num1 = int.Parse(Console.ReadLine());
Console.Write("Enter Score 2: ");
int num2 = int.Parse(Console.ReadLine());
Console.Write("Enter Score 3: ");
int num3 = int.Parse(Console.ReadLine());
int total = num1 + num2 + num3;
int ave = (num1 + num2 + num3) / 3;
int rate = ave;
Console.WriteLine("");
Console.WriteLine("");
Console.WriteLine("");
Console.Write("Student Name: " + studname);
Console.WriteLine("");
Console.Write("Student Age: " + age);
Console.WriteLine("");
Console.Write("Student Year Level: " + level);
Console.WriteLine("");
Console.Write("Student Course: " + course);
Console.WriteLine("");
Console.Write("Score 1: " + num1);
Console.WriteLine("");
Console.Write("Score 2: " + num2);
Console.WriteLine("");
Console.Write("Score 3: " + num3);
Console.WriteLine("");
Console.Write("Total_Score= " + total);
Console.WriteLine("");
Console.Write("Total_Average= " + ave);
switch (rate)
{
case 1:
if (rate < 100 && rate > 90)
Console.Write("Rate = 1.00");
Console.WriteLine("");
Console.Write("Hi! " + studname + "you Passed");
Console.WriteLine("");
break;
case 2:
if (rate < 89 && rate > 85)
Console.Write("Rate = 1.00");
Console.WriteLine("");
Console.Write("Hi! " + studname + "you Passed");
Console.WriteLine("");
break;
case 3:
if (rate < 84 && rate > 80)
Console.Write("Rate = 1.00");
Console.WriteLine("");
Console.Write("Hi! " + studname + "you Passed");
Console.WriteLine("");
break;
case 4:
if (rate < 79 && rate > 75)
Console.Write("Rate = 1.00");
Console.WriteLine("");
Console.Write("Hi! " + studname + "you Passed");
Console.WriteLine("");
break;
case 5:
if (rate < 75)
Console.Write("Rate = 5.00");
Console.WriteLine("");
Console.Write("Hi! " + studname + "you Failed");
Console.WriteLine("");
break;
}
Console.ReadLine();
}
答案 0 :(得分:1)
你误解了switch
- 块的作用。如果您正在测试的值仅采用几个设置值中的一个,则使用它。
尝试完全删除switch
- 块并重新编写此代码以使用一系列if
/ else
- 块。另请注意,您需要处理rate = 90
等边缘情况;您还需要检查rate >= 90
以捕获此案例:
if (rate < 100 && rate >= 90)
{
Console.Write("Rate = 1.00");
Console.WriteLine("");
Console.Write("Hi! " + studname + "you Passed");
Console.WriteLine("");
}
else if (rate < 89 && rate >= 85)
{
Console.Write("Rate = 1.00");
Console.WriteLine("");
Console.Write("Hi! " + studname + "you Passed");
Console.WriteLine("");
}
else ...
或者如果你真的想在每个案例中做同样的事情,除非rate < 75
,你可以简化为:
if (rate >= 75)
{
Console.Write("Rate = 1.00");
Console.WriteLine("");
Console.Write("Hi! " + studname + "you Passed");
Console.WriteLine("");
}
else
{
Console.Write("Rate = 5.00");
Console.WriteLine("");
Console.Write("Hi! " + studname + "you Failed");
Console.WriteLine("");
}
甚至只是这样的事情:
Console.Write("Rate = {0}", (rate >= 75) ? "1.00" : "5.00");
Console.WriteLine("");
Console.Write("Hi! {0} you {1}", studname, (rate >= 75) ? "Passed" : "Failed");
Console.WriteLine("");
答案 1 :(得分:0)
您的案例值不正确,switch语句正在启用案例值,因此在这种情况下,只有在rate == 1时才会调用案例1,依此类推,因此您需要按顺序修改这些值把它输出。