2013-09-20 91 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

謝謝!它完美的作品。 :)但是你說這不是正確的做法。你心裏還有別的東西嗎? –