【问题标题】:How to use an array that was returned from a method in Java [duplicate]如何使用从Java中的方法返回的数组[重复]
【发布时间】:2013-02-25 02:00:43
【问题描述】:

我创建了一个从文件中读取一堆数字的方法,将前两个数字作为数组的行和列长度,然后将其余的数字转换为整数并将整数放入二维数组:

public static int[][] fillArray(String myFile){
    //uses another class to create a text field
    TextFileInput in = new TextFileInput(myFile); 

    int[][] filledArray;
    //uses a method in class TextInputFile to read a line then go to the next line
    String line = in.readLine();
    //int i=0;
    int row, col;
    row = Integer.parseInt(line);
    line = in.readLine();
    col = Integer.parseInt(line);
    filledArray = new int[row][col];
    for(int i=0; i<row; i++){
        for (int j=0; j<col; j++){
            line = in.readLine();
            filledArray[i][j] = Integer.parseInt(line);
        }
    }
    return filledArray;
}

我的问题是如何访问我的多维数组filledArray 中的各个元素?如,我将如何打印 filledArray[1][3] 中的内容或在 main 方法中添加 filledArray[1][3]+filledArray[2][3]

【问题讨论】:

标签: java arrays methods multidimensional-array return


【解决方案1】:

只需将返回的数组存储在本地数组中

public static void main(String[]args){
  int[][]array = fillArray("fileName"); // call the method
  // traverse the array using a loop

  for(int i=0;i<array.length;i++)
    for(int j=0;j<array[i].length;j++)
     System.out.println(a[i][j]); // do something with elements 

 }

【讨论】:

  • 我没有意识到它应该这么简单。你能解释一下为什么返回的填充数组可以存储在本地数组中吗?是不是因为filledArray 只是对包含数组的内存块的引用,并且将引用分配给本地数组会将所有值分配给该数组?对于愚蠢的问题,我很抱歉。
  • @Chase fillArray 返回一个数组,对吧?如何捕获返回值?我们必须将它存储在相同类型的局部变量中。简单
  • @Chase fillArray 返回对存储在堆上的数组的引用(这是关键字 new 为您所做的)。当您从static void main 访问数组中的值时,您访问的内存位置与fillArray 中使用的内存位置相同。
【解决方案2】:

fillArray 方法返回一个 reference 到它创建的数组。您所要做的就是在您的 main 方法中为此分配一个局部变量。

public static void main(String[] args) {
   int[][] arr = fillArray("file.txt");

   System.out.println(arr[1][3]);

   System.out.println(arr[1][3] + arr[2][3]);
}

您可以使用数组中的索引来访问各个元素,例如arr[4][2]。请注意不要生成 IndexOutOfBoundsException,这就是为什么在 for 循环中检查数组长度是个好主意。

【讨论】:

    【解决方案3】:

    您将获取fillArray(...) 的结果,将其存储在一个变量中,然后对其进行处理。

    例如

    int[][] filled=fillArray("file.txt");
    System.out.println(filled[1][3]);
    System.out.println(filled[1][3]+filled[2][3]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-01
      • 2018-10-15
      • 2016-07-15
      • 2014-12-14
      • 2017-04-23
      • 1970-01-01
      • 1970-01-01
      • 2022-07-12
      相关资源
      最近更新 更多