2013-09-20 92 views
0

我有一个字符串这些阵列,我想将它们加载到一个数组的数组事后处理它们。如何一组一维数组复制到在处理二维数组?

具体而言,这是我的代码:

leerHTMLs(String[] urls) { 

String[][] htmlsArr; 

    for (int i = 0; i < urls.length; i++) { 

     String [i][] htmlsArr = loadStrings(urls[i]); 

    } 

} 

我碰到一个错误,因为 “字符串htmlsArr [I] [] = loadStrings(网址[I]);”显然不是初始化数组的正确方法,对吧?但是,我怎样才能将这些一维数组移动到我的多维数组?

我已经尝试过其他的东西,除了初始化多维数组有太大而不能倒闭数量,但是,似乎是作弊。

回答

1

好了,你自己说的!这是一个数组数组!这意味着当你做

htmlsArr[i] 

你将从这个数组数组中返回元素i,这当然是一个数组!当你做

htmlsArr[i][j] 

你得到的是数组中的元素j,它是数组中的元素我叫做htmlsArr!最后的代码应该是这样的:

void leerHTMLs(String[] urls) { 
    String[][] htmlsArr; 
    htmlsArr = new String[urls.length][0]; 
    for (int i = 0; i < urls.length; i++) { 
    htmlsArr[i] = loadStrings(urls[i]); 
    } 
} 

如此以来loadStrings()返回的字符串你告诉处理采取的输出,并把它放在阵列htmlsArr i的元素(这当然是一个数组)的数组。

从技术上讲,这不是做这种事情的适当方式,因为说

htmlsArr = new String[urls.length][0]; 

手段使与元素urls.length编号的数组,他们都应该有0号元素的数组。但你覆盖数组与元素的任意数量的阵列等阵列,特别是多达loadStrings可能给你。

编辑:

作为每Shane的评价请求,这样做更适当的方法是在阵列中的一个(外部或内部的一个)使用列表。也就是说,当然,以我个人的浅见,因为自从加工(渣)允许你这样做,你不妨考虑一下它正确。问题是,当你说东西的喜欢:

String [][] arr = new String[3][4]; 

你的意思本质上是一个矩形阵列排序是这样的:

{{ "a","b","c","e" }, 
{ "p","y","f","n" }, 
{ "g","q","r","m" }} 

也就是说,在三个数组的数组,每个包含四个元素。这仅仅是出于直觉的原因,我认为这是一种“不正当”的方式。如果阵列是这样的:

{{ "a","b","c","e","k","h","s" }, 
{ "p","y" }, 
{ "g","q","r","m" }} 

没有办法在new String[3][something]方式直观地定义它,但你可以随时使用拉伸在我原来的答复。(顺便说一句,你似乎也可以用一个像这样的空参数来定义它:new String[3][]

但是既然你要离开数组的第二维undefined,那么你可能会转向列表更适合的列表为“未知数量的元素”工作。因为它似乎不能创建列表的数组,你将不得不创建数组列表如下:

ArrayList<String []> a = new ArrayList<String []>(); 

正如你可以看到有没有在这里的元素数量的定义。 ArrayLists可以添加尽可能多的元素,并且可以随意添加和删除元素。那么上面的代码说的是你有一个尚未定义的字符串数组列表。然后,在for循环读取你的网址,你可以去:

a.add(loadStrings(urls[i])); 

,现在有一个在您ArrayList的一个新的String数组元素!

+0

谢谢!它完美的作品。 :)但是你说这不是正确的做法。你心里还有别的东西吗? –