Java 将一个数组分配给另一个数组时引发异常
我有一个函数,可以获取某个网站的HTML代码。最终,该函数将以数组的形式返回整个页面。我试图将页面保存在另一个数组中,但由于某种原因,它总是会抛出异常(ArrayIndexOutOfBoundsException) 我不确定我是否只是缺少了一些基本的东西,或者不仅仅是这些。给你一些我的代码:Java 将一个数组分配给另一个数组时引发异常,java,android,Java,Android,我有一个函数,可以获取某个网站的HTML代码。最终,该函数将以数组的形式返回整个页面。我试图将页面保存在另一个数组中,但由于某种原因,它总是会抛出异常(ArrayIndexOutOfBoundsException) 我不确定我是否只是缺少了一些基本的东西,或者不仅仅是这些。给你一些我的代码: protected String[] doInBackground(String... login) { String[] page = new String[1
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
-块以创建新数组)
s
是字符串时,不需要s.toString()
,因为它只返回s
当您有未指定数量的元素时,
列表
比数组更灵活、更易于使用。一般来说,数组是非常低级的,几乎没有理由直接使用它们(它们对于构建列表实现非常有用)。哪一行导致了异常?异常给出的堆栈跟踪是什么?您的程序将网站的读取限制为1024行。当读取第1025行时,语句是page[1024]=s.toString()
,这是不允许的数组索引。嘿,首先,请原谅我的新手行为。谢谢你的帮助,结果发现我获取的页面实际上比数组长,我自己没有想到这一点真是太愚蠢了。谢谢你的其他想法,我已经对我的代码做了更改,并将在将来的项目中记住它。@Tim:不需要道歉。与其把它藏起来,把那些错误保留很长一段时间,不如把它展示出来并学习。