正数验证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循环实际上是没有意义的。可能几乎是逐字重复的