-7

抱歉扩展 NullPointerException 洪水:D

我已经阅读了大量关于 NullPointerException 的问题,但我无法弄清楚我的代码中哪里有问题。

有问题的行:

if(userAgent.doc.innerHTML().contains("haha")

我试过 String x = userAgent.doc.innerHTML(); 并在下一行使用条件,但仍然存在:原因: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;
        }
    }

非常感谢您的建议!:)

4

1 回答 1

0

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;
    }
于 2020-05-07T08:26:20.717 回答