对不起,我把NullPointerException泛滥的问题扩大了 :D
我读了很多关于NullPointerException的问题,但是我不知道我的代码中哪里有问题。
有问题的行。
if(userAgent.doc.innerHTML().contains("haha")
我试着用String x = userAgent.doc.innerHTML();并在下一行使用条件,但仍然是:Caused by: java.lang.NullPointerException: 试图在一个空对象引用上调用虚拟方法'java.lang.String com.jaunt.Document.innerHTML()'。
请大家知道我做错了什么吗?
围观的代码。
private class AT extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... voids) {
UserAgent userAgent = new UserAgent();
toSearch += 50;
while (visited.size() < toSearch) {
try {
userAgent.visit(currentUrl);
Elements elements = userAgent.doc.findEvery("<a href>");
for (Element e : elements) {
String url = e.getAt("href");
if (!toVisit.contains(url) && !visited.contains(url) && url.contains(stayAt))
toVisit.add(url);
}
} catch (Exception e) {
e.printStackTrace();
}
visited.add(currentUrl);
if(userAgent.doc.innerHTML().contains(key))
recipes.add(currentUrl);
toVisit.remove(0);
currentUrl = toVisit.get(0);
}
return null;
}
}
非常感谢你的建议! :)
你 doc
对象 userAgent
是空的。
添加空检查验证 userAgent.doc != null
当你试图添加 currentUrl
在 recipes
:
protected Void doInBackground(Void... voids) {
UserAgent userAgent = new UserAgent();
toSearch += 50;
while (visited.size() < toSearch) {
try {
userAgent.visit(currentUrl);
Elements elements = userAgent.doc.findEvery("<a href>");
for (Element e : elements) {
String url = e.getAt("href");
if (!toVisit.contains(url) && !visited.contains(url) && url.contains(stayAt))
toVisit.add(url);
}
} catch (Exception e) {
e.printStackTrace();
}
visited.add(currentUrl);
if(userAgent.doc != null && userAgent.doc.innerHTML().contains(key))
recipes.add(currentUrl);
toVisit.remove(0);
currentUrl = toVisit.get(0);
}
return null;
}