我有一系列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数组的正确坐标的公式的任何想法。
答案 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++;
}