Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.lang.IndexOutOfBoundsException:索引:1,大小:1_Java_Arraylist - Fatal编程技术网

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

正如标题所说,我的问题是,当我编译时,线程“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.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还是很陌生。什么是堆栈跟踪?@Scheids
stacktrace
是一个完全例外,您可能会得到重复的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)));
}