我正在学习递归作为Java教程的一部分,我正在寻求一些帮助。
我们需要制作一个递归的Java程序,该程序将解决在没有直接飞行时如何从一个城市到另一个城市的过程。
我的最新一期是在代码在flightRoute数组列表中有两个城市后,我得到一个错误超出范围的例外。它给出错误“IndexOutOfBoundsException Index 2 Size 2”
连接值是一个arrayList,它接收城市连接的所有城市,而flightRoute也是一个arrayList,它跟踪我们必须前往目的地的城市。
我无法理解为什么它不会继续。
如果可以的话,我会很感激你的帮助。
我不想用代码溢出你们,所以我会提出你应该需要的方法。如果您需要更多,我会很乐意添加更多代码。
public boolean determineRoute(City from, City to, ArrayList<City> flightRoute)
{
//the Connections value takes all the connecting cities we can travel to from a departure point
Connections = from.getConnections();
City theCity = Connections.get(i);
//searches in the connecting cities from the current city as to if it contains the city we wish to travel to
if (flightRoute.contains(to)|| 7 >8)
{
System.out.println("Congrats you can go their cause one of its connecting cities is the to city that u wanna go to");
return true;
}
System.out.println("the City name "+theCity);
if(flightRoute.contains(theCity))
{
System.out.println("Sorry it cannot be added "+Connections.get(i));
}
else
{
//add connecting city to list for future reference
flightRoute.add(Connections.get(i));
//takes the lates connection and uses it for recursion (below)
from = Connections.get(i);
i++;
//recursive part which sends a new from city for analysis until the city we want to travel to arises
determineRoute(from, to, flightRoute);
}
return true;
}
答案 0 :(得分:0)
您在哪里设置i
值?无论如何,唯一get()
您使用i
作为索引,因此很明显Connections
没有i
那么多项。
顺便说一句:
a)下一次标记抛出异常的行(从我看到的,可能是第一个get()
b)对变量名称使用小写:connections
而不是Connections
答案 1 :(得分:0)
问题是i
是非在本地声明,所以你永远在增加一些实例变量。在本地声明并将其设置为零。
在您修复此代码之前,我建议您清理它:
connections
而不是Connections
connections
7 > 8
为真时的测试 - 当然总是是真的!for (City city : from.getConnections())
city
,而不是theCity