如何将多维数组移动到另一个方法?

时间:2015-10-05 11:09:07

标签: java arrays methods

我在解决任务的最后一部分时遇到了麻烦。我获得了数组中最小的数字,但当我将其移动到另一种方法时,我在打印中得到了这个数字:

[[D@2a139a55

如果我在main(String[] args) {中写这个,我得到0是正确的。

public class Task05 {

    public static void main(String[] args) {
        double[][] numbers = getArray();

        System.out.println("Smallest number in array is " + numbers);

    }

    public static double[][] getArray() {

        double[][] numbers = new double[25][25];
        double smallest = Integer.MAX_VALUE;

        for (int row = 0; row < numbers.length; row++) {
            for (int column = 0; column < numbers[row].length; column++) {

                if (smallest > numbers[row][column]) {
                    smallest = numbers[row][column];



                }

            }
        }
        return numbers;
    }
}

2 个答案:

答案 0 :(得分:1)

您需要将数组传递给方法。现在,您正在getArray()方法中创建一个没有任何内容的新数组!

您必须了解的是,即使您的方法是Static,您的数组也不是!这意味着您需要将数组作为参数传递给方法。

此外,您获得该输出的原因是您将数组传递给print语句,而不是调用getArray()方法(此时也会返回地址)。

getArray()方法中,您实际上不需要或者真的想要创建第二个数组。以这种方式思考;如果您的阵列是1,000,000个元素怎么办?你真的想分配另外的1,000,000个元素来找到最小的元素吗?没有!这是对系统资源的极高定价。我们将遍历已经创建的数组!

根据我上面提到的问题,您需要返回找到的最小数字,而不是数组的地址!这意味着您需要将退货类型更改为doublereturn smallest

 public class Task05 {

        public static void main(String[] args) {
            double[][] numbers = getArray();

            System.out.println("Smallest number in array is " + getArray(numbers));

        }

        // Changed return type to double, instead of double[][]
        public static double getArray(double [][] numbers) {
            double smallest = Integer.MAX_VALUE;

            for (int row = 0; row < numbers.length; row++) {
                for (int column = 0; column < numbers[row].length; column++) {

                    if (smallest > numbers[row][column]) {
                        smallest = numbers[row][column];
                    }

                }
            }
            // Return the smallest number that you found
            return smallest;
        }
    }

答案 1 :(得分:0)

public class JavaApplication8 {

    public static void main(String[] args) {
        // create and initialize array
        int[][] x = {{1, 2, 0}, {4, 5, 6}};
        // call smallest method and print the value returned
        System.out.println("smallest is " + smallest(x));
    }

    // smallest method 
    // to find small element in array

    public static int smallest(int[][] x) {
        // suppose the first element is the small one
        int smallest = x[0][0];

        // iterate throgh array
        for (int i = 0; i < x.length; i++) {

            for (int j = 0; j < x[i].length; j++) {

                // compare current element with smallest element
                // if current element is the small one then save it in smallest variable
                if (x[i][j] < smallest) {
                    smallest = x[i][j];
                }
            }
        }
        // return smallest
        return smallest;
    }
}