在这个程序中,我试图创建一个坐标平面并替换特定点的值。如果平面中的最大值为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";
答案 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";