[英]Recursive function doesn't work
我正在编写一个程序,在其中给出页面的路径和提及下一页的标签的名称类。
这是我尝试的代码:
public String pagination_get_link(String path, String pagnNextLink_tag) throws IOException{
Document doc = Jsoup.parse(new File(path), "UTF-8");
Element url = doc.getElementById(pagnNextLink_tag);
String url_s = url.attr("href");
pagination_get_link(url_s,pagnNextLink_tag);
return url_s;
}
页面示例就是这样的页面: 在此处输入链接描述
我想做一个递归方法,直到获得所有分页链接的循环。 提前致谢 。
您的递归函数将永远运行,这将使您的程序耗尽堆栈内存并崩溃,如果由于找不到元素而不会崩溃,而是在这种情况下依靠捕获异常而感觉不到就像一个好主意。
进行递归循环时,它必须返回结果,并且如果函数“完成”,则不能再次调用函数本身。
也就是说,如果没有更多数据要处理,那么应该完成它,现在您将继续运行循环直到崩溃为止。
我不确定您希望您的方法如何工作,但是说实话,在这种情况下,您似乎并不需要递归,我建议仅使用常规的while循环或类似方法。
编辑:
如果您确实要使用递归代码,则在url_s
为空的情况下在调用函数之前返回应该可以解决问题,例如...
public String pagination_get_link(String path, String pagnNextLink_tag) throws IOException{
Document doc = Jsoup.parse(new File(path), "UTF-8");
Element url = doc.getElementById(pagnNextLink_tag);
String url_s = url.attr("href");
// Not sure how to check if its empty, so change it to what you need.
if(url_s == "") {
return "";
}
pagination_get_link(url_s,pagnNextLink_tag);
return url_s;
}
现在,当您尝试通过ID或类似方法获取元素时,可能会引发异常,在这种情况下,我宁愿在尝试获取元素之前检查该元素是否存在以及是否具有“ href”属性,以及不,只是在那一点返回。
另外,您不必从函数返回字符串,因为对结果不执行任何操作。 将其更改为无效,然后return;
什么时候应该回来。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.