gpt4 book ai didi

java - ArrayOutOfIndex...正在解析 URL,但不知道每个 HTML 页面的确切索引?

转载 作者:行者123 更新时间:2023-12-02 00:37:08 24 4
gpt4 key购买 nike

我正在使用以下内容解析一些 URL 链接..

  Document jsDoc2 = null;
try {
jsDoc2 = Jsoup.connect(url).get();

Elements thumbs = jsDoc2.select("div.latest-media-images img.latestMediaThumb");
List<String> thumbLinks = new ArrayList<String>();
for(Element thumb : thumbs) {
thumbLinks.add(thumb.attr("src"));
}
for(String thumb : thumbLinks) {
url0 = thumbLinks.get(0);
url1 = thumbLinks.get(1);
url2 = thumbLinks.get(2);

Log.e("URL0", url0);
Log.e("URL1", url1);
Log.e("URL2", url2);

使用多个源测试代码后。我遇到了一个问题。

09-19 20:59:56.710: ERROR/AndroidRuntime(7793): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2
09-19 20:59:56.710: ERROR/AndroidRuntime(7793): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
09-19 20:59:56.710: ERROR/AndroidRuntime(7793): at java.util.ArrayList.get(ArrayList.java:308)

有时没有三个可用的链接,当然,当我要求获取 2 的索引时,它并不存在。

我如何进行防御性编码或创建更好的方法来实现这一点。不知道它将解析并加载到列表中的确切 URL 数量的不确定性

编辑:

现在我的代码

 for(int i = 0; i< thumbLinks.size(); i++) {
Log.e("URL" + i, thumbLinks.get(i));




url0 = thumbLinks.get(i);
url1 = thumbLinks.get(i);

//Fix index out of bounds exception
url2 = thumbLinks.get(i);



}

最佳答案

认为这可能更适合您的循环结构

for(int i = 0; i< thumbLinks.size(); i++) {
Log.e("URL" + i, thumbLinks.get(i));
}

您也可以将其缩短为:

Elements thumbs = jsDoc2.select("div.latest-media-images img.latestMediaThumb");

int index = 0;

for(Element thumb : thumbs) {
Log.e("URL" + index, (thumb.attr("src"));
index++;
}

第二个选项通过减少循环结构并提供相同的结果来减少操作时间。使用这两种方法都不会出现索引越界错误,因为只有在列表中有拇指时它才会添加 URL。

您的代码失败的原因是您明确地尝试调用索引,并且本质上完全忽略了循环结构。使用循环的原因是这样您就不必从数组中显式获取对象并避免出现越界异常。

关于java - ArrayOutOfIndex...正在解析 URL,但不知道每个 HTML 页面的确切索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7479034/

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