如何获取另一个方法返回的数组大小

时间:2016-04-21 05:17:54

标签: java arrays

考虑以下Java代码,

public class FirstClass{
 public static Object[][] firstMethod(){
   Random random=new Random();
   int a=random.nextInt(100);
   int b=random.nextInt(100);
   int n=0;
   Object[][] arrayObj=new Object[a][b];
   for(int i=0;i<a;i++)
     for(int j=0;j<b;j++){
        arrayObj[i][j]=++n;
     }
     return arrayObj;
  }
}
public class SecondClass{
 public void secondMethod(){
   Object[][] myObj=FirstClass.FirstMethod();
 }
}

如何获得&#39; myObj&#39;的尺寸长度?来自&#39; secondMethod()&#39;以及如何打印&#39; myObj&#39;

3 个答案:

答案 0 :(得分:1)

要获得大小,您可以执行以下操作,假设统一分配。

 public void secondMethod(){
   Object[][] myObj=FirstClass.FirstMethod();

   int a = myObj.length;
   int b = myObj[0].length;
 }

要打印数组,有很多方法,但考虑到问题的基调:

for (int i = 0; i < myObj.length; ++i) {
  for (int j = 0; j < myObj[i].length; ++j) {
     System.out.println(myObj[i][j]);
  }
}

答案 1 :(得分:1)

在定义2D阵列的长度时,技术上有2种尺寸。一个是2D数组中的数组数,由myObj.length给出。另一个是2D阵列中特定阵列中的元素数量,例如myObj[0].length可以访问。这将返回myObj中第一个数组中的元素数。 0可以是任意数字,具体取决于您想知道其中包含多少元素的数组。我们可以使用这两个长度来打印出数组中的所有元素。

for (int i = 0; i < myObj.length; i++) {
  for (int j = 0; j < myObj[i].length; j++) {
     System.out.println(myObj[i][j]);
  }
}

或者只是打印出每个阵列的大小,

for (int i = 0; i < myObj.length; i++) { 
    System.out.println(myObj[i].length);    
}

或者将尺寸长度放入另一个数组

int[] dimLengths = new int[myObj.length];
for (int i = 0; i < myObj.length; i++) { 
    dimLengths[0] = myObj[i].length;   
}

最后,Object[][] myObj=FirstClass.FirstMethod();应为

Object[][] myObj=FirstClass.firstMethod(); (在firstmethod中小写f而不是大写)

答案 2 :(得分:1)

你的代码中几乎没有问题,就像没有main方法一样,方法调用FirstClass.FirstMethod();中的方法名称错误。

这是代码

import java.util.Random;
class FirstClass{
 public static Object[][] firstMethod(){
   Random random=new Random();
   int a=random.nextInt(100);
   int b=random.nextInt(100);
   int n=0;
   Object[][] arrayObj=new Object[a][b];
   for(int i=0;i<a;i++)
     for(int j=0;j<b;j++){
        arrayObj[i][j]=++n;
     }
     return arrayObj;
  }
}
class SecondClass{
 public void secondMethod(){
   Object[][] myObj=FirstClass.firstMethod();
    System.out.println(myObj.length);      // length of row
    System.out.println(myObj[0].length);  //length of first column
    System.out.println(java.util.Arrays.deepToString(myObj));  //will print 2d array

 }
 public static void main (String[] args){
 new SecondClass().secondMethod();
 }
}

DEMO