我有一个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。
答案 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