【问题标题】:How do you pass Array dimensions?你如何传递数组维度?
【发布时间】:2012-02-27 04:59:14
【问题描述】:

如何在 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]);

}

数组来自的类:注意方法lord creator被称为multipul times。

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 arrays methods dimensions


    【解决方案1】:

    在 Java 中,通常不必将数组维度与数组一起传递,因为每个数组都隐含地知道自己的维度。

    如果数组被称为arr,那么arr.length 将返回它的大小。如果arr 是一个二维数组,那么arr[0].length 将给出第一行的大小; arr[1].length 是下一行的大小,以此类推。

    如果函数要分配调用者指定大小的数组,只需将所需维度作为int 参数传递给函数。

    【讨论】:

    • 但是当我尝试传递数组并找到它的长度时,它给了我很多错误。问题是接收数组的类的数组需要初始化传递的数组将复制到的数组,但是没有传递的数组维度,我该如何初始化它?
    • @Russell:从口头描述中很难理解这个问题。给我们看一些代码。
    【解决方案2】:

    您不必在 Java 中显式传递数组维度,数组具有相应的长度属性。

    public String[][] abc() {
        return new String[10][10];
    }
    

    【讨论】:

      【解决方案3】:

      您只需使用.length 即可计算出数组的长度。但是 Java 数组只是数组的数组(不是 N 维的连续元素块)。

      因此,它们可以是锯齿状的,这意味着每一行都有不同数量的列。所以你只能依赖theStringArray[0](第一行的列数)的长度等于theStringArray[1],如果有文件证明theStringArray不是锯齿状的。

      【讨论】:

        【解决方案4】:

        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];
        

        然后,前面的代码会给出关于列数的误导性结果。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-10
          • 2020-03-24
          • 1970-01-01
          • 2018-05-10
          • 2015-11-29
          • 1970-01-01
          相关资源
          最近更新 更多