【问题标题】:not all code paths return a value when searching through array通过数组搜索时,并非所有代码路径都返回值
【发布时间】:2012-10-20 09:28:48
【问题描述】:

我正在尝试创建一个方法,该方法在数组中搜索用户指定的名称并返回其在数组中的位置,如果未找到该名称,则返回 -1。我以为我有它,但是我收到一条错误消息,指出“并非所有代码路径都返回一个值”代码以方法的名称将其抛出,因此它不是很具体,尽管我并不期望该错误具有太多特异性。

无论如何,这是代码,谁能告诉我是什么引发了错误?

    static int FindStudent()//search for student name
    {
        while (z < NameArray.Length)
        {
            if (name == NameArray[z])
            {
                return z;
            }//end if statement
            else
            {
                z++;
            }//end else statement
        }//end while loop
        if (z==5)
        {
            return -1;
        }//end student not found
    }//end FindStudent method

【问题讨论】:

  • 这是 Java 还是 C#?猜测并选择了C#。以后可以随意更改标签。
  • 而且,如果z != 5,你返回......究竟是什么?
  • 我不相信有人提到过,但z 似乎没有在这里初始化;也许它是一个成员变量,但考虑到问题的上下文,我认为它不是。我猜它要么不是 C#/Java,要么是伪代码。
  • Z 之前已初始化,我只是试图将它剥离到我知道错误正在发生的区域,以避免将与问题无关的代码弄乱。它是 C#

标签: c# arrays return


【解决方案1】:

删除最后的 if 语句。正如您的代码现在一样,如果您的数组中恰好有 4 个项目并且它们都不匹配,它只会返回 -1。就此而言,您也可以删除您的 else ;因为上面的 if 它返回,所以隐含了 else。

static int FindStudent()//search for student name
{
    while (z < NameArray.Length)
    {
        if (name == NameArray[z])
        {
            return z;
        }
        z++;
    }
    return -1;// student not found
}

【讨论】:

  • 完美修复了它。谢谢。我想我让它比它需要的更复杂
猜你喜欢
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 2013-10-06
  • 2016-02-14
相关资源
最近更新 更多