2012-10-25 49 views
0
public class BusInformation { 

String BusRoute[][] = new String[4][]; 

BusRoute[0] = new String[] {"a" , "b", "c"}; 

BusRoute[1] = new String[] {"a" , "b"}; 
} 

我知道第一個參數中有多少個BusRoutes。第二個參數大小是可變的,取決於路線。 我該如何初始化它?初始化未知尺寸的多維/鋸齒字符串數組

+0

它會正常工作。您是否嘗試過? –

+0

我認爲您需要發佈更多代碼我們瞭解上下文,你發佈的代碼不會編譯,我假設數組初始化是在一個構造函數中完成的,是否有輸入參數決定「第二個參數」的大小? –

回答

1

你應該能夠給它這樣的代碼......

public class BusInformation { 
    String busRoute[][] = new String[4][0]; 

    public BusInformation(){ 
     busRoute[0] = new String[] {"a" , "b", "c"}; 
     busRoute[1] = new String[] {"a" , "b"}; 
    } 
} 

它與您的代碼,但願意爲第二維指定0的初始大小,只是讓其明確表示,沒有任何初始大小。我還將數組的加載包裝到類構造函數中。

二維數組只是一個普通的一維數組,其中每個項目是任意長度的數組。即使您將2D數組設置爲初始大小(例如new String[4][5]),它也沒有什麼區別 - 您仍然可以將更小或更大的數組分配給基本數組中的每個項目,就像您已經在做的一樣。

+0

Thanx幫助:) –

+0

歡迎。如果您認爲答案有幫助,您可以點擊左側的「向上」箭頭,以便人們知道它有所幫助。如果答案解決了你的問題,你也可以「勾選」它作爲接受的答案。 – wattostudios

0

如果大小在變量初始化時是未知的,那麼在這裏可能數組不是最好的選擇。我有兩個建議,一個使用的Lists數組或使用番石榴的Multimap

如果你真的想/需要繼續使用二維數組,如上所述初始化(或者與第一組元素或作爲一個空數組),當你需要添加值時,使用Arrays.copyOf創建一個新的數組副本,以允許添加新的元素。

0

如果你問一個硬連接的初始化,您的代碼可以更簡明地寫成這樣:

public class BusInformation { 
    String BusRoute[][] = new String[][]{ 
     {"a" , "b", "c"}, 
     {"a" , "b"}, 
     null, 
     null 
    }; 
} 

但要注意,有多少初始化構造的方法可以做硬性限制。 (這是與一個方法的字節碼必須符合64k字節的事實有關。)

如果您詢問從文件中讀取數據(例如)初始化數組,然後它基本上是工作的問題數組需要多大,創建它們並填寫它們的值。 (例如,您可能會將數據讀入列表中,然後轉換爲2-D數組表格。