返回数组的问题

时间:2018-04-21 15:13:34

标签: java arrays

我有一个2D int [] [],我正在尝试编写一个在该数组中定位0的函数,并返回一个带有坐标的数组。

我想出了这个:

public int[] locateZero(int[][] array) {
    int[] coordinates = new int[2];
    for (int i=0; i < array.length; i++) {
        for (int j=0; j < array[0].length; j++) {
            if (array[i][j] == 0) {
                //The following line doesn't work!
                coordinates.add(i, j);
            }
        }
    }
    return coordinates;
}

NetBeans保留了add方法的基础,声明无法找到它。

有人可以帮助我吗?

这是一个愚蠢的问题,我知道。我是一个Java noob。

3 个答案:

答案 0 :(得分:4)

名为coordinates的数组是一个数组。数组不支持add()函数。如果您想要添加添加功能,请改用ArrayList<Integer>

更典型的是,将值分配给数组:

public int[] locateZero(int[][] array) {
    int[] coordinates = new int[2];
    for (int i=0; i < array.length; i++) {
        for (int j=0; j < array[0].length; j++) {
            if (array[i][j] == 0) {
                //here is the difference
                coordinates[0] = i;
                coordinates[1] = j;
            }
        }
    }
    return coordinates;
}

答案 1 :(得分:2)

如前所述,您无法使用添加。数组不支持此功能。但我不会使用数组来返回坐标。我会写一个简单的类来存储它们。

class Coordinate
{
    public int coordX;
    public int coordY;

    Coordinate(int x, int y)
    {
        this.coordX = x;
        this.coordY = y;
    }
}

private Coordinate locateZero(int [][] array)
{
    if(array == null)
    {
        return null;
    }

    for(int x = 0; x < array.length; x++)
    {
        for(int y = 0; y < array[0].length; y++)
        {
            if(array[x][y] == 0)
            {
                return new Coordinate(x, y);
            }
        }
    }

    return null; // Value zero not found in array
}

// Usage of Coordinate class

Coordinate coords = locateZero(myArray);

if(null != coords)
{
    // Value zero found print coordinates
    System.out.println(coords.coordX);
    System.out.println(coords.coordY);
}

答案 2 :(得分:1)

您在此计划中遇到很多错误。 首先,您使用的是数组而不是ArrayList。 java中的数组中没有'add'方法。 其次你要返回2个值,即坐标,然后你可以简单地制作一个2D数组并返回它。所以你的功能看起来像这样。

root