簡體   English   中英

錯誤提示:並非所有代碼路徑都返回值

[英]Error on Not all code paths return a value

我的代碼有問題嗎? 我不太確定如何解決它。 幾天來一直困擾着我,我無法入睡和安寧地吃飯。 幫我。 我要死了。 我可能會誇大其詞,但他們說我的帖子主要是編碼,我必須添加更多詳細信息。 這還不夠嗎?

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;
    }
}

您的方法dailyspend()指定它將返回一個double ,但在任何地方都不會調用return

添加return +應該返回的值。

發生此錯誤的原因是您的方法應返回簽名中定義的double精度值。 但是,它不返回任何內容,因為您沒有提供有關要返回的值的任何信息。 一個方法只能有一個或沒有返回值,但是我想您想讓您的方法返回四個不起作用的值-至少不使用return

我假設您的方法不需要任何返回值。 因此,將方法return-type更改為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的所有輸入的總和。

如果您將方法聲明為voidTask以外的其他方法,您需要確保所有可能的代碼路徑都有有效的return或拋出Exception

幸運的是,對於您的函數dailyspend ,您只有一條可能的代碼路徑,因此您只需在該行下的任何地方簡單地添加一個return (我想您希望它成為for循環正下方的行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM