如何将6x7 int数组转换为单维数组

时间:2013-11-26 11:21:44

标签: java android arrays

我有一系列coordiantes

int[][] xyBoard = new int[6][7];

int[] flattenedBoard = new int[42];

其中0,0是董事会的左下角。

我想在网格中显示数据,但网格想要从左上角到右下角放置所有内容

网格需要一个长度为42的一维数组,此数组中的位置1需要对应于xyBoard数组中的x,y 0,5,平面数组中的位置2将在2d数组中为1.5等等......关于如何将xyBoard转换为扁平化数组或者在给定1d数组位置的情况下引用2d数组的正确坐标的公式的任何想法。

2 个答案:

答案 0 :(得分:1)

引用坐标的公式是

int idx(int x, int y) {
    return y*widthOfBoard() + x;
}

int x(int idx) {
    return idx % widthOfBoard();
}

int y(int idx) {
    return (idx - x(idx)) / widthOfBoard();
}

要获取一维数组的索引,请执行调用     IDX(X,Y)

其中x,y是你的坐标。

从索引中获取x坐标

x(idx)

其中idx是一维数组的索引。

答案 1 :(得分:0)

这是一个简单的循环,将2Darray的所有元素写入您的1d数组

int[][] xyBoard = new int[6][7];
int[] flattenedBoard = new int[42];

int sum = 0;
for(int i = 0; i < 6 ; ++i){

    for (int j = 0; j < 7; ++j){
        flattenedBoard[sum] = xyBoard[i][j];
        sum++;
}
sum++;
}