java.lang.IndexOutOfBoundsException:索引:1,大小:1
正如标题所说,我的问题是,当我编译时,线程“main”java.lang.IndexOutOfBoundsException中出现异常:索引:1,大小:1。这就是问题的根源 编辑java.lang.IndexOutOfBoundsException:索引:1,大小:1,java,arraylist,Java,Arraylist,正如标题所说,我的问题是,当我编译时,线程“main”java.lang.IndexOutOfBoundsException中出现异常:索引:1,大小:1。这就是问题的根源 编辑 Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1 at java.util.ArrayList.rangeCheck(ArrayList.java:653) at java.util.Array
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at pa6.FlightFinder.bestDirectPrice(FlightFinder.java:117)
at pa6.FlightFinder.main(FlightFinder.java:14)
public static ArrayList<String> bestDirectPrice(ArrayList<String> flightList,String city1, String city2) {
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> Price = new ArrayList<String>();
for (int i=0; i<flightList.size(); i++) {
list = directFlights(flightList, city1, city2);
Price.add(getPrice(list.get(i)));
}
return Price;
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at pa6.FlightFinder.bestDirectPrice(FlightFinder.java:117)
at pa6.FlightFinder.main(FlightFinder.java:14)
请看这两个街区 循环直到
i
但是getPrice(list.get(i)
正在使用上面的索引,但在不同的列表中
for (int i=0; i<flightList.size(); i++) {
list = directFlights(flightList, city1, city2);
Price.add(getPrice(list.get(i)));
}
您的for循环是关于flightList的,而不是list。 在每次迭代中,您都会将一个新值重新分配给列表,而不是添加一个新元素 试着改变
for (int i=0; i<flightList.size(); i++) {
list = directFlights(flightList, city1, city2);
Price.add(getPrice(list.get(i)));
}
用于(int i=0;我相信一个好的堆栈跟踪在这里会有很大帮助。很抱歉,我对java还是很陌生。什么是堆栈跟踪?@Scheidsstacktrace
是一个完全例外,您可能会得到重复的Yes,这个错误输出可能会将您带到问题所在的确切位置。谢谢,这更有意义!@Scheids这是一些错误现在您可以调试和跟踪它,因为在运行时,数据是什么,两个列表的大小是什么,我们无法知道。非常感谢,已经修复了!
for (int i=0; i<flightList.size(); i++) {
list = directFlights(flightList, city1, city2);
Price.add(getPrice(list.get(i)));
}
if (city1a.equals(city1) && city2a.equals(city2)) {
list.add(flightList.get(i));
}
for (int i=0; i<flightList.size(); i++) {
list = directFlights(flightList, city1, city2);
Price.add(getPrice(list.get(i)));
}
list = directFlights(flightList, city1, city2);
for (int i=0; i<list.size(); i++) {
Price.add(getPrice(list.get(i)));
}