2013-12-11 41 views
0

我需要创建一个国家的班级。其中一个属性是一系列城市。 我需要编写一个方法,可以在给定名称时找到数组中城市的扩展(城市的名称是其属性之一,并且可以通过使用getCityName()方法达到)。Java:缺少返回语句错误

我写了这个代码:

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

,但我得到这个compliation错误: “缺少return语句”。对于如何解决这个问题,我无能为力。

对不起,如果这是不明确的,因为这是我第一次使用本网站。

+1

谢谢大家的好评!非常感谢您的帮助。 – Guy

回答

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

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

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