使用int数组中的值作为变量

时间:2013-12-03 15:31:45

标签: java

我有这个2D数组:

int[][] neighbours = { { 0, -1, -1, -1, 0, 1, 1, 1 }, // row
                  { 1, 1, 0, -1, -1, -1, 0, 1 } }; // col

我想知道是否可以将此值中的值用作常规int变量,因此我可以使用例如neighbours[6][6]来生成2个int变量,一个用于行,一个用于列,row = 1,列= -1。

任何想法?

3 个答案:

答案 0 :(得分:1)

int row = neighbours[0][6]
int column = neighbours[1][6]

答案 1 :(得分:1)

你误解了2D数组的概念。

您的数组没有位置[6][6]。您已定义2行8列。第一个索引表示您访问的行,第二个索引表示哪个列。

neighbours[6][6]表示第7列中的第7个元素(数组中的第一个元素由索引0表示),它不存在。我认为您要访问的元素实际存储在neighbours[0][6]neighbours[1][6]中。 请注意,neighbours[x][y]仅代表一个元素,您使用两个变量指示其位置(这就是您将其称为二维数组的原因)。

除此之外,您可以将存储在该数组中的任何值分配给int变量。

int anInt = neighbours[0][0] //In you case, that's 0
int anotherInt = neighbours[0][1] //And this one is -1

答案 2 :(得分:0)

1  2  3  4  5
6  7  8  9  10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

int[][] values = { {1, 2, 3, 4, 5}, 
                   {6, 7, 8, 9, 10}, 
                   {11, 12, 13, 14, 15}, 
                   {16, 17, 18, 19, 20}, 
                   {21, 22, 23, 24, 25} };

拥有一个二维数组就像拥有一个数组数组一样,所以在我的例子中,每个“row”都是一个int数组,你可以通过获取每一行的第n个元素来对列进行分组。这是抓住不同数字的结果。

values[0][0] = 1
values[0][1] = 2
values[1][0] = 6
values[1][4] = 10
values[3][2] = 18

现在,假设你想得到8号码的所有邻居。首先,你需要知道8号位置是什么:

values[1][2];
int y = 1;
int x = 2;

接下来,从x中加减;然后从y中加减,得到附近的值。我将在此示例中包含对角线。

int[] neighbors = new int[8];//We know there will be 8 neighbors in a square
int neighborCount = 0;

for (int j = y-1; j <= y+1; j++)
{
    for (int i = x-1; i <= x+1; i++) // We start at the number 2(position [0][1]), increment through 3, and 4, then go to next row and start at 2 again.
    {
        if (! (j == y && i == x)) //Don't want to include 8 itself.
        {
            neighbors[neighborCount] = values[i][j];
            neighborCount++;
        }
    }
}

此代码还需要考虑超出数组范围。例如:没有值[-1] [ - 1]。这就是我所有的时间,但希望这会有所帮助。