用Java替换2D数组?

时间:2014-11-30 01:22:05

标签: java multidimensional-array

在这个程序中,我试图创建一个坐标平面并替换特定点的值。如果平面中的最大值为2,则此代码创建一个最大值和最小值为2的二维数组,并将轴编号为:

String [][] grid = new String [max+max+2][max+max+2];
        for (int i=0; i<max+max+1; i++)
            for (int j=0; j<max+max+2; j++)
                grid [i][j]="o";

        for (int i=0; i<max+max+1; i++)
        {Integer Col=new Integer(max-i);
        grid [i][0]=Col.toString();}

        int [] firstRow= new int [max+max+1];
        for (int i=0; i<firstRow.length; i++)
            firstRow [i]=max-max-max+i;

ex:
   -2 -1  0  1  2
 2  o  o  o  o  o
 1  o  o  o  o  o
 0  o  o  o  o  o
-1  o  o  o  o  o
-2  o  o  o  o  o

在下面的代码中,我收到机场的随机x,y坐标(例如,假设x = 1,y = -1)。我必须在此坐标(1,-1)处用“P”替换双数组中的“o”。当我尝试这样做时,它将“P”置于正确的x坐标(1)但不是正确的y坐标。第二个for循环一定有问题,但我不知道它是什么。正确的替换应该如下所示:

 ex:
       -2 -1  0  1  2
     2  o  o  o  o  o
     1  o  o  o  o  o
     0  o  o  o  o  o
    -1  o  o  o  P  o
    -2  o  o  o  o  o



        Integer airx = new Integer (airport1.getX());
        Integer airy= new Integer (airport1.getY());
        for (int i=0; i<firstRow.length; i++)
            if (firstRow [i]==airport1.getX())
                airx=i;

        String yCord= airy.toString();
        for (int k=0; k<grid[0].length-1; k++)
            {String w =grid [k][0];
            if (w==yCord)

        for (int i=0; i<grid[0].length-1; i++)
            if (grid [i][0]==airy.toString())
                airy=i;
        grid [airy][airx+1]="A";

1 个答案:

答案 0 :(得分:0)

您的阵列将更易于阅读和阅读如果从

更改,则为index
   -2 -1  0  1  2
 2  o  o  o  o  o
 1  o  o  o  o  o
 0  o  o  o  o  o
-1  o  o  o  o  o
-2  o  o  o  o  o

通过改变你的生成方式来实现这一目标。首先索引数组

   -2 -1  0  1  2
-2  o  o  o  o  o
-1  o  o  o  o  o
 0  o  o  o  o  o
 1  o  o  o  o  o
 2  o  o  o  o  o

创建一个变量来保存数组的大小,即

int arrSize = 2*max + 2;

创建另一个变量来保存位置(0,0)的数组索引

int arrMid = arrSize/2;

您可以使用 grid [arrMid] [arrMid] 来访问位置(0,0)


在您的示例中,说x = 1且y = -1 ,只需执行此操作即可将该位置更新为“P”:

Integer airx = new Integer (airport1.getX()); // 1
Integer airy= new Integer (airport1.getY());  // -1
grid[arrMid + airx][arrMid + airy] = "P";     // grid[4][2] = "P";