无法在Java中返回字符串

无法在Java中返回字符串,java,string,Java,String,下面是我的Java代码。我正在尝试只解析链接的html文件。我发送了文件,并在parseURL下打印了数组,效果很好。但当我返回它并将其设置为parray时,parray突然全部为空。你知道为什么吗 public String[] getWebPages(Document doc) throws IOException { Elements pages = doc.select("a[href]").not("a[href$=gz]").not("a[href$=jar").not("

下面是我的Java代码。我正在尝试只解析链接的html文件。我发送了文件,并在parseURL下打印了数组,效果很好。但当我返回它并将其设置为parray时,parray突然全部为空。你知道为什么吗

public String[] getWebPages(Document doc) throws IOException
{

    Elements pages = doc.select("a[href]").not("a[href$=gz]").not("a[href$=jar").not("a[href$=rar").not(
            "a[href$=zip").not("a[href$=mdb").not("a[href$=doc").not("a[href$=docx").not("a[href$=odt").not(
                    "a[href$=pdf").not("a[href$=ppt").not("a[href$=pptx").not("a[href$=wks");

    for (Element page : pages) 
    {
        System.out.println("\nDownloading next page...");
        String url = page.absUrl("href");
        System.out.println(url);
        parray = parseURL(url,page);

           System.out.println(parray[0]);
           System.out.println(parray[2]);
           System.out.println(parray[3]);
           System.out.println(parray[4]);
           System.out.println(parray[5]);
           System.out.println(parray[6]);
           System.out.println(parray[7]);
           System.out.println(parray[8]);
           System.out.println(parray[9]);


    }

    return parray;


   }



 public String[] parseURL(String url, Element page)
    {

     Boolean boo = true;

        if (url.indexOf("#") != -1)
            {
                System.out.println("Non-page...discarding page.");
                return null;
            }

        for(x=0; x<500; x++)
        if(url.equals(array[x]))
        {
            return null;
        }

        array[i] = url;
           i++;

           System.out.println(array[1]);
           System.out.println(array[2]);
           System.out.println(array[3]);
           System.out.println(array[4]);
           System.out.println(array[5]);
           System.out.println(array[6]);
           System.out.println(array[7]);
           System.out.println(array[8]);
           System.out.println(array[9]);



        return array;
    }

这是因为您使用的是for循环,在循环中,您获得了新数据,并丢弃了从循环的上一次迭代中获得的所有数据,因此大部分数据都被丢弃和浪费

考虑创建一个2D数组,或者更好的创建一个List,List的列表,这样您就可以在for循环中保存返回的所有结果

i、 e

然后呢,

List<List<String>> parsedInfo = new ArrayList<List<String>>();
while (stillHavePages) {
  // parse pages and add to list above
}

循环之后,parray将是最后一次调用parseURLurl,page;,的结果;,如果该值为null,那么最终将得到null.forx=0;这似乎更适合500,这是我选择的一个疯狂的上限。正如我在下面所说的,大多数代码只是检查它是否为空。最终将全部删除。您至少可以使用array.length而不是500。或者只使用array而不是parray并忽略parseURLs返回值,该返回值将是array或null。这是一个非常奇怪的代码。但是它不应该在for循环中保持不变吗?至少一次迭代?我认为帕雷应该对一整组有效。也许不是。我会重做的。是的,这是一个非常奇怪的代码。一个很好的方法就是检查是否有空的东西,这就是为什么它很混乱的原因。@user3010468:我不知道。我只知道你在for循环中使用了幻数,这个循环不应该有幻数。只要对他们说“不”。@user3010468如果URL已经在数组中或不包含字符串,则从parseURL返回null。在这种情况下,无论数组中有什么,您的阵列最终都会被设置为null。你把自己弄糊涂了,因为你有硬编码的数字,奇怪的本地和外地的混合,以及不必要的重新分配。
List<List<String>> parsedInfo = new ArrayList<List<String>>();
while (stillHavePages) {
  // parse pages and add to list above
}