簡體   English   中英

你如何傳遞數組維度?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM