gpt4 book ai didi

java - OutOfBoundsException 问题,Java

转载 作者:行者123 更新时间:2023-11-29 10:05:35 24 4
gpt4 key购买 nike

我收到以下错误:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 86, Size: 86
at java.util.ArrayList.rangeCheck(ArrayList.java:604)
at java.util.ArrayList.get(ArrayList.java:382)
at Netbooks.Recommendations.getDotProduct(Recommendations.java:72)
at Netbooks.TestRecomendations.main(TestRecomendations.java:11)
Java Result: 1

我已经多次查看代码,但我似乎无法找到我在哪里查看数组列表的索引...

这里是点积数组列表的代码:

public List<Integer> getDotProduct() throws IOException {
Books book = new Books();
Ratings cust = new Ratings();
PureRatings pureRatings = new PureRatings();


List<String> bookList = book.readBooks();
List<String> customerList = cust.readCustomers();
List<List<Integer>> pureRatingsList = pureRatings.parseRatingsFile();
List<Integer> dotProduct = new ArrayList<Integer>();
int index = getCustIndex();

if (index == -1) {
return dotProduct;
}

for (int i = 0; i < customerList.size(); i++) {
int sum = 0;

for (int j = 0; j < bookList.size(); i++) {
if (i == index) {
dotProduct.add(0);
} else { //Next line is line 72.
sum = sum + (pureRatingsList.get(index).get(j)) * (pureRatingsList.get(i).get(j)); //Line 72.
}
}
dotProduct.add(sum);
}

return dotProduct;
}

为了以防万一,我的主要方法(在​​另一个类中):

public class TestRecomendations {

public static void main(String[] args) throws IOException {
Recommendations recomm = new Recommendations();

List<Integer> dotProduct = recomm.getDotProduct();//Line 11.

for (int i = 0; i < dotProduct.size(); i++) {
System.out.println(dotProduct.get(i));
}
}
}

它应该只打印出 dotProduct ArrayList 的元素...

我不明白第 72 行是如何导致问题的,因为我应该能够向 ArrayList 添加无限数量的项目....任何帮助将不胜感激。

最佳答案

第 72 行的问题是 get(),而不是 add()

我怀疑这可能是问题的根本原因:

for (int i = 0; i < customerList.size(); i++) {
int sum = 0;

for (int j = 0; j < bookList.size(); i++) {
if (i == index) {
dotProduct.add(0);
} else { //Next line is line 72.
sum = sum + (pureRatingsList.get(index).get(j)) * (pureRatingsList.get(i).get(j)); //Line 72.
}
}
dotProduct.add(sum);
}

在第二个 for 循环中,您递增 i 而不是 j。这可能会导致您在行中使用 i 的值

sum = sum + (pureRatingsList.get(index).get(j)) 
* (pureRatingsList.get(i).get(j));

大于 pureRatingsList 的大小,导致您看到的异常。

关于java - OutOfBoundsException 问题,Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9125330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com