public class BusInformation {
String BusRoute[][] = new String[4][];
BusRoute[0] = new String[] {"a" , "b", "c"};
BusRoute[1] = new String[] {"a" , "b"};
}
我知道第一個參數中有多少個BusRoutes。第二個參數大小是可變的,取決於路線。 我該如何初始化它?初始化未知尺寸的多維/鋸齒字符串數組
public class BusInformation {
String BusRoute[][] = new String[4][];
BusRoute[0] = new String[] {"a" , "b", "c"};
BusRoute[1] = new String[] {"a" , "b"};
}
我知道第一個參數中有多少個BusRoutes。第二個參數大小是可變的,取決於路線。 我該如何初始化它?初始化未知尺寸的多維/鋸齒字符串數組
你應該能夠給它這樣的代碼......
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]
),它也沒有什麼區別 - 您仍然可以將更小或更大的數組分配給基本數組中的每個項目,就像您已經在做的一樣。
Thanx幫助:) –
歡迎。如果您認爲答案有幫助,您可以點擊左側的「向上」箭頭,以便人們知道它有所幫助。如果答案解決了你的問題,你也可以「勾選」它作爲接受的答案。 – wattostudios
如果大小在變量初始化時是未知的,那麼在這裏可能數組不是最好的選擇。我有兩個建議,一個使用的Lists
數組或使用番石榴的Multimap
如果你真的想/需要繼續使用二維數組,如上所述初始化(或者與第一組元素或作爲一個空數組),當你需要添加值時,使用Arrays.copyOf創建一個新的數組副本,以允許添加新的元素。
如果你問一個硬連接的初始化,您的代碼可以更簡明地寫成這樣:
public class BusInformation {
String BusRoute[][] = new String[][]{
{"a" , "b", "c"},
{"a" , "b"},
null,
null
};
}
但要注意,有多少初始化構造的方法可以做硬性限制。 (這是與一個方法的字節碼必須符合64k字節的事實有關。)
如果您詢問從文件中讀取數據(例如)初始化數組,然後它基本上是工作的問題數組需要多大,創建它們並填寫它們的值。 (例如,您可能會將數據讀入列表中,然後轉換爲2-D數組表格。
它會正常工作。您是否嘗試過? –
我認爲您需要發佈更多代碼我們瞭解上下文,你發佈的代碼不會編譯,我假設數組初始化是在一個構造函數中完成的,是否有輸入參數決定「第二個參數」的大小? –