正数验证C#
我正在尝试写一个方法来检查一个数字是否为正数,我不断得到一个错误,它说“不是所有的代码路径都返回一个值”,我不确定我做错了什么正数验证C#,c#,C#,我正在尝试写一个方法来检查一个数字是否为正数,我不断得到一个错误,它说“不是所有的代码路径都返回一个值”,我不确定我做错了什么 public static double IsValad(double x) { Boolean loopValue = true; while (loopValue == true) { if (x > 0) { loopValue = false; retu
public static double IsValad(double x)
{
Boolean loopValue = true;
while (loopValue == true)
{
if (x > 0)
{
loopValue = false;
return x;
}
else
{
Console.WriteLine("Error: Please enter a positive value.");
x = double.Parse(Console.ReadLine());
return x;
}
}
}
您没有返回while循环之外的值。拿出你的while循环。没必要
public static double IsValid(double x)
{
if (x > 0)
{
return x;
}
else
{
Console.WriteLine("Error: Please enter a positive value.");
x = double.Parse(Console.ReadLine());
return x;
}
}
如果你想循环,直到用户得到正确的答案,考虑这样的事情:
public static double GetPositiveNumber()
{
while (true)
{
Console.Write("Enter a Positive number: ");
var response = Console.ReadLine();
if (!double.TryParse(response, out var doubleValue))
{
Console.WriteLine("You must enter a valid number");
continue; //causes control to jump to the end of the loop (and back again)
}
if (doubleValue > 0)
{
return doubleValue; //The only exit to the loop
}
//if I get here, it's a valid number, but not positive
Console.WriteLine("Sorry, the number must be positive...");
}
}
您不能在while之外返回double类型的变量。添加一个返回x;语句在while子句之外。while循环的作用是什么?编译器不知道while循环是否会执行。是的,您在循环之前定义了
loopValue=true
,但它认为可以从一开始就有循环值。如果while
循环在开始时为false,则不返回任何值。使用一个do…while
循环来解决这个问题。你总是在第一次迭代中返回,所以while循环实际上是没有意义的。可能几乎是逐字重复的