繁体   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