我需要创建一个国家的类。其中一个属性是一系列城市。 我需要编写一个方法,可以在给出名称时在数组中找到城市的扩展名(城市名称是其属性之一,可以通过使用getCityName()方法到达)。
我写了这段代码:
private int findCityExtensionByName (String cityName)
{
for(int i=0 ; i<=MAXIMUM_NUMBER_OF_CITIES ;i++)
{
if (_cities[i].getCityName().equals(cityName))
return i;
}
}
但是我得到了这个恭维错误:“缺少退货声明”。关于如何解决这个问题我一无所知。
如果不清楚,我很抱歉,因为这是我第一次使用这个网站。
答案 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");
}
一个神奇的值是一个你不希望被使用的值,你将用它来代表“没有”。在您的情况下,最常见的是-1
和Integer.MIN_VALUE
。
答案 2 :(得分:0)
如果使用返回类型声明的方法可以正常完成,则编译器时间错误:它必须返回具有已定义类型的值。因此,在编译时不知道for
循环是否会执行计算并比较它的条件。