Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将一个数组分配给另一个数组时引发异常_Java_Android - Fatal编程技术网

Java 将一个数组分配给另一个数组时引发异常

Java 将一个数组分配给另一个数组时引发异常,java,android,Java,Android,我有一个函数,可以获取某个网站的HTML代码。最终,该函数将以数组的形式返回整个页面。我试图将页面保存在另一个数组中,但由于某种原因,它总是会抛出异常(ArrayIndexOutOfBoundsException) 我不确定我是否只是缺少了一些基本的东西,或者不仅仅是这些。给你一些我的代码: protected String[] doInBackground(String... login) { String[] page = new String[1

我有一个函数,可以获取某个网站的HTML代码。最终,该函数将以数组的形式返回整个页面。我试图将页面保存在另一个数组中,但由于某种原因,它总是会抛出异常(ArrayIndexOutOfBoundsException)

我不确定我是否只是缺少了一些基本的东西,或者不仅仅是这些。给你一些我的代码:

  protected String[] doInBackground(String... login)
        {
            String[] page = new String[1024];
            try {
                page = executeHttpGet(); //THIS IS WHERE IT FAILS
            } catch (Exception e) {
                page[0] = "Error";
            }
            return page;
        }

public String[] executeHttpGet() throws Exception {
         URL u;
         InputStream is = null;
         DataInputStream dis;
         String s;
         int i = 0;
         String[] page = new String[1024];
         addSecurityException();
         Authenticator.setDefault(new MyAuthenticator(activity));
         try {
            u = new URL("https://myurl.com");
            is = u.openStream();        
            dis = new DataInputStream(new BufferedInputStream(is));
            while ((s = dis.readLine()) != null) {
                if (s.toString().length() > 10)
                    {
                    page[i] = s.toString();
                    i++;
                    }
            }
        } catch (IOException ioe) {

        }
         finally {
            try {
               is.close();
            } catch (IOException ioe) {

            }
        } 
         return page;
    }
    }
有人知道为什么我不能将返回的数组分配给doInBackground()中的数组吗?非常感谢您的帮助

  • 您的捕获块是空的,这是一个非常糟糕的想法,因为当出现问题时,您将得到信息
  • 当您在下面两行重新分配
    页面时,不需要在其声明上初始化
    页面
    (不过,您必须更改
    catch
    -块以创建新数组)
  • 您是否检查过URL返回的行数不超过1024行
  • s
    字符串时,不需要
    s.toString()
    ,因为它只返回
    s
  • 在分析异常时,您应该查看整个stacktrace,以找出问题发生的确切位置
  • 当询问异常时,您应该发布整个stacktrace
    当您有未指定数量的元素时,
    列表
    比数组更灵活、更易于使用。一般来说,数组是非常低级的,几乎没有理由直接使用它们(它们对于构建
    列表
    实现非常有用)。

    哪一行导致了异常?异常给出的堆栈跟踪是什么?您的程序将网站的读取限制为1024行。当读取第1025行时,语句是
    page[1024]=s.toString()
    ,这是不允许的数组索引。嘿,首先,请原谅我的新手行为。谢谢你的帮助,结果发现我获取的页面实际上比数组长,我自己没有想到这一点真是太愚蠢了。谢谢你的其他想法,我已经对我的代码做了更改,并将在将来的项目中记住它。@Tim:不需要道歉。与其把它藏起来,把那些错误保留很长一段时间,不如把它展示出来并学习。