![](/img/trans.png)
[英]Multiple equal ifs should return different values from different methods (C#)?
[英]Is it possible to return multiple values with multiple ifs? C#
double GPoint = 0, GPer;
string Des = null;
Console.WriteLine("Enter your Equivalence Grade");
GPer = double.Parse(Console.ReadLine());
if (GPer >= 95 && GPer <= 100)
GPoint = 1.00;
Des = "Excellent";
if (GPer >= 91 && GPer <= 94)
GPoint = 1.25;
Des = "Superior";
if (GPer >= 88 && GPer <= 90)
GPoint = 1.50;
Des = "Very Good";
if (GPer >= 86 && GPer <= 87)
GPoint = 1.75;
Des = "Good";
if (GPer >= 84 && GPer <= 85)
GPoint = 2.00;
Des = "Very Satisfactory";
Console.WriteLine( "Your final grade is {0}, a {1} Grade."
,GPoint
,Des);
它只正确地执行第一个变量,但第二个值总是打印最后一个 if 语句。 所以它总是对任何值返回“非常满意”。
首先,在现代 C# 中,我可能会使用 switch 表达式和元组来执行此操作(并且我还会将局部变量名称更改为更有意义和惯用大小写)......但撇开这一点不谈,眼前的问题是您的缩进表明您认为:
if (GPer >= 88 && GPer <= 90)
GPoint = 1.50;
Des = "Very Good";
...只有在满足条件时才分配Des
。 这不是真的。 该代码等效于:
if (GPer >= 88 && GPer <= 90)
{
GPoint = 1.50;
}
Des = "Very Good";
如果您的if
语句体需要包含多个语句,则需要使用块体。 我个人建议始终使用块主体,即使主体只是一个语句,但这是编码风格的问题。 您可以通过对所有if
语句使用块体来修复代码,例如
if (GPer >= 88 && GPer <= 90)
{
GPoint = 1.50;
Des = "Very Good";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.