无法在Java中返回字符串

时间:2014-02-25 01:43:42

标签: 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("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;
    }

1 个答案:

答案 0 :(得分:3)

这是因为你正在使用for循环,并且在循环内部,你获得新数据,并丢弃从循环的前一次迭代中获得的所有数据,因此大多数数据被丢弃和浪费。

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

即,

List<String> parseUrl(...) {

}

然后,

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