错误并非所有代码路径都返回一个值

时间:2016-04-20 12:19:23

标签: c#

我的代码有什么问题?我不太确定如何解决它。它已经困扰了我好几天,我无法入睡,平静地吃饭。帮我。我要死了。我可能夸张但他们说我的帖子主要是编码,我必须添加更多细节。这还不够吗?

static void Main(string[] args)
{
    dailyspend(ref totalspendf, ref totalspendc, ref totalspendcr, ref totalspendo);
}


static double dailyspend(ref double totalspendf, ref double totalspendc, ref double totalspendcr, ref double totalspendo)
{ 
    int days;
    double spendf = 0, spendc = 0, spendcr = 0, spendo = 0;
    for (days = 1; days <= 7; days++)
    {
        Console.WriteLine("");
        Console.Write("Food : ");
        spendf = double.Parse(Console.ReadLine());
        Console.Write("Clothing : ");
        spendc = double.Parse(Console.ReadLine());
        Console.Write("College related : ");
        spendcr = double.Parse(Console.ReadLine());
        Console.Write("Outside: ");
        spendo = double.Parse(Console.ReadLine());
        Console.WriteLine("");
        totalspendf += spendf;
        totalspendc += spendc;
        totalspendcr += spendcr;
        totalspendo += spendo;
    }
}

3 个答案:

答案 0 :(得分:0)

您的方法dailyspend()指定它将返回double,但无处调用return

添加return +应返回的值。

答案 1 :(得分:0)

发生此错误是因为您的方法应返回签名中定义的double。但是,它不会返回任何内容,因为您不提供有关要返回的值的任何信息。一个方法只能有一个或没有返回值,但我想你希望你的方法返回四个不起作用的值 - 至少不使用return

我假设您的方法不需要任何返回值。因此,将方法返回类型转换为void应该对您有用。但是,您仍然需要在Main中声明所有变量,然后才能通过引用传递它们。

static void dailyspend(ref double totalspendf, ref double totalspendc, ref double totalspendcr, ref double totalspendo)
{ 
    int days;
    for (days = 1; days <= 7; days++)
    {
        Console.WriteLine("");
        Console.Write("Food : ");
        double spendf = double.Parse(Console.ReadLine());
        Console.Write("Clothing : ");
        double spendc = double.Parse(Console.ReadLine());
        Console.Write("College related : ");
        double spendcr = double.Parse(Console.ReadLine());
        Console.Write("Outside: ");
        double spendo = double.Parse(Console.ReadLine());
        Console.WriteLine("");
        totalspendf += spendf;
        totalspendc += spendc;
        totalspendcr += spendcr;
        totalspendo += spendo;
    }
}

现在你可以这样称呼它:

double totalspendf = 0, totalspendc = 0, totalspendcr = 0, totalspendo = 0;
dailyspend(ref totalspendf, ref totalspendc, ref totalspendcr, ref totalspendo)

现在,您可以对通过引用传递的四个参数执行任何操作,例如

Console.WriteLine(totalspendf);

哪个应打印方法中为Food所做的所有输入的总和。

答案 2 :(得分:0)

如果您已将方法声明为voidTask以外的其他方法,则需要确保所有可能的代码路径都有效return,或者抛出Exception }。

对于你的函数dailyspend,幸运的是你只有一个可能的代码路径,所以你需要简单地在return的任何地方添加(我想你会希望它是直接位于for循环下方的行。