![](/img/trans.png)
[英]How do you initialize a 2d array of one type with the dimensions of a 2d array of another type
[英]How do you pass Array dimensions?
如何在java中傳遞數組維度和數組? 我這樣的東西:
public String[1][1] abc(){
return theStringArray
}
//but this isn't possible
那么有沒有辦法傳遞數組的維度?
現在我有2個方法為每個維度傳遞一個int但是有更好的方法嗎?
它的核心問題是:
當我嘗試傳遞數組並找到它的長度時,它給了我一大堆錯誤。 問題是接收數組的類的數組需要初始化傳遞的數組將復制到的數組,但是沒有傳遞的數組維度,我該如何初始化它?
數組傳遞給的類:
String[][] lordStats;
ArrayList<String> troopList;
public void loader() {
lord lorder = new lord();
lordStats = lorder.returnLord();
total = lorder.returnLordTotal();
for (int i = 0; i < lordStats[0].length; i++)
troopList.add (lordStats[i][2]);
}
數組的類來自:注意方法主創建者被稱為多次。
public class lord {
static int total;
String[][] lordStats;
public void total(int total1) {
total = total1;
System.out.println("lordTotal");
}
public void lordCreator(String lord, String kingdom, String troop, int times) {
lordStats = new String[total][3];
System.out.println("animalStats");
lordStats[times][0] = lord;
lordStats[times][1] = kingdom;
lordStats[times][2] = troop;
}
public String[][] returnLord() {
return lordStats;
}
在Java中,您通常不必將數組維度與數組一起傳遞,因為每個數組都隱式地知道它自己的維度。
如果數組被稱為arr
,那么arr.length
將返回其大小。 如果arr
是2D數組,則arr[0].length
將給出第一行的大小; arr[1].length
是下一行的大小,依此類推。
如果函數是分配調用者指定大小的數組,只需將所需的維度作為int
參數傳遞給函數。
您不必在Java中顯式傳遞數組維度,數組具有長度屬性。
public String[][] abc() {
return new String[10][10];
}
你可以用.length
數組的長度。 但Java數組只是數組的數組(而不是連續元素的N維塊)。
因此,它們可以是鋸齒狀的,意味着每行具有不同數量的列。 所以你只能依賴於theStringArray[0]
的長度(第一行的列數)等於theStringArray[1]
如果有文件證明theStringArray
沒有鋸齒狀。
Java中的所有數組都是一維的。 您可以擁有一個數組數組,這實際上是一個二維數組。 但是,每個元素可以具有不同的長度,並且無法強制執行單個第二維度大小。 你可以這樣做:
public String[][] makeArray(int rows, int columns) {
return new String[rows][columns];
}
然后您可以按如下方式查詢數組:
String[][] array = makeArray(1, 1);
System.out.println("Row count: " + array.length);
System.out.println("Column count: " + array[0].length); // assumes >0 elements
但是,有人可以這樣做:
String[][] array = makeArray(3, 3);
array[0] = new String[1];
之前的代碼會給出列數的誤導性結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.