“并非所有代码路径都返回值”

时间:2011-10-29 02:29:31

标签: c# methods

我正在使用数组和方法。我正在编写一个代码,用于计算用户在数组中输入的数字的平均值。我提出了第一种方法,但VS告诉我“并非所有代码路径都返回一个值”。当我在Main()方法中测试代码时,它运行良好但是当它在我的GetValues()方法中时,我得到了错误。

我阅读了所有其他帖子,但由于它们的特殊性,它们对我来说不太合理。我知道这不是太难,但我是初学者,并试图自己理解这一点。

我的程序尚未完成,以下代码只是我程序的第一部分(方法)。一旦GetValues()工作,那么我们的想法是从另一个计算平均值的方法调用此方法。同样,GetValues()应该捕获数组。

以下是代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace testscores
{
    class Program
    {
        static void Main(string[] args)
        {
        }

        private static int[] GetValues()
        {

            string inValue;
            int[] score = new int[5];
            int total = 0;

            for (int i = 0; i < score.Length; i++)
            {
                Console.Write("Enter Score {0}: ", i + 1);
                inValue = Console.ReadLine();
                score[i] = Convert.ToInt32(inValue);
            }

            for (int i = 0; i < score.Length; i++)
            {
                total += score[i];
            }
        }
    }
}

5 个答案:

答案 0 :(得分:3)

您是否尝试返回整数数组score

   ....
        for (int i = 0; i < score.Length; i++)
        {
            total += score[i];
        }
        return score;
    }

所以你可以在调用它时捕获这个数组

int[] scores = GetValues();

答案 1 :(得分:2)

您的函数被声明为返回int[],但其中没有单个return语句。

答案 2 :(得分:2)

在函数GetValues()的末尾,你需要返回一个int []。这是编译器错误告诉你的;如果您遵循GetValues()中的所有代码路径,则至少有一个不返回值。 (将return score添加到函数末尾。)

答案 3 :(得分:1)

您的方法没有返回任何内容,并且未声明为void,而是int []

答案 4 :(得分:0)

编译错误是因为您需要添加return score

除此之外,你还在做一个循环来填充局部变量'total',然后对那些看起来像设计/逻辑错误的东西不做任何事情。基本上,只有删除代码或者输出param而不是局部变量,才能删除代码。您也可以在第一个循环中执行此操作。