作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用以下内容解析一些 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/
我正在使用以下内容解析一些 URL 链接.. Document jsDoc2 = null; try { jsDoc2 = Jsoup.connec
我是一名优秀的程序员,十分优秀!