Java:缺少return语句错误

时间:2013-12-11 23:42:25

标签: java

我需要创建一个国家的类。其中一个属性是一系列城市。 我需要编写一个方法,可以在给出名称时在数组中找到城市的扩展名(城市名称是其属性之一,可以通过使用getCityName()方法到达)。

我写了这段代码:

private int findCityExtensionByName (String cityName)
{
    for(int i=0 ; i<=MAXIMUM_NUMBER_OF_CITIES ;i++)
    {
        if (_cities[i].getCityName().equals(cityName))
            return i;      
    }
}

但是我得到了这个恭维错误:“缺少退货声明”。关于如何解决这个问题我一无所知。

如果不清楚,我很抱歉,因为这是我第一次使用这个网站。

3 个答案:

答案 0 :(得分:3)

您需要为方法的每个可能的执行路径添加一个return语句(没有人可以保证for循环将被执行或者cityName等于你的所有权。数组):

private int findCityExtensionByName (String cityName)
{
    for(int i=0 ; i<=MAXIMUM_NUMBER_OF_CITIES ;i++)
    {
        if (_cities[i].getCityName().equals(cityName))
            return i;      
    }
    return -1;
}

答案 1 :(得分:1)

如果没有找到任何内容,您必须返回一个值或抛出异常。

使用魔法值或抛出适当的异常,例如IllegalArgumentException

private int findCityExtensionByName (String cityName)
{
    for(int i=0 ; i<=MAXIMUM_NUMBER_OF_CITIES ;i++)
    {
        if (_cities[i].getCityName().equals(cityName))
            return i;      
    }
    throw new IllegalArgumentException("Could not find the city");
}

一个神奇的值是一个你不希望被使用的值,你将用它来代表“没有”。在您的情况下,最常见的是-1Integer.MIN_VALUE

答案 2 :(得分:0)

如果使用返回类型声明的方法可以正常完成,则编译器时间错误:它必须返回具有已定义类型的值。因此,在编译时不知道for循环是否会执行计算并比较它的条件。