将2D数组索引转换为1D索引

Bec*_*cky 16 java arrays

我有两个数组的国际象棋变体,我在Java编码......我至今一个控制台版本,它代表(大小为32),但我的工作做一个图形用户界面,该板为一维数组,我想它显示为4x8网格,所以我有一个JP维尔的二维数组......

问题是,是否有任何公式可以将array [i] [j]索引转换为array [i],因为它是一个4x8数组?

Mic*_*ael 22

想一想:

你有一个恰好是一维数组的数组,实际上,它只是二维数组项的长连接.

所以,假设你有一个大小为5 x 3(5行,3列)的二维数组.我们想制作一维数组.您需要决定是要按行还是按列连接,对于此示例,我们将说明串联是按行进行的.因此,每行的长度为3列,因此您需要将您的一维数组视为在3的"步骤"中定义.因此,您的一维数组的长度将为5 x 3 = 15,现在您需要找到接入点.

所以,假设您正在访问二维数组的第二行和第二列,那么最终将是3步(第一行)+第二行中的步数,或者3 + 2 = 5.因为我们是基于零的索引,为-1,因此它将在索引4处.

现在针对具体的配方:

int oneDindex = (row * length_of_row) + column; // Indexes
Run Code Online (Sandbox Code Playgroud)

所以,作为上述例子,你最终会有

oneDindex = (1 * 3) + 1
Run Code Online (Sandbox Code Playgroud)

这应该是它


Ste*_*ham 20

给出4列乘8行,然后:

i = row * 4 + col
Run Code Online (Sandbox Code Playgroud)

编辑:我的坏,显然没有人抓住我这个错误.但它应该是row * 4 + col.

row * 8 + col 会在可能的索引中留下不必要的空白.

  • 我总是不断地回到这个答案,由于某种原因,我只是找不到一种方法来记住这个方程式`index = x + y * num_cols;`可以很好地补充我们的推论方式! (3认同)

Mat*_*eer 9

2D阵列中的每一行都在您的1D阵列中首尾相连.i给出你所在的行,并j给出列(该行的距离).因此,如果您ith在行中,则需要i端到端放置完整的行,然后j在其上添加更多行以获取单个数组索引.

所以它会是这样的
singleDimIndex = array[0].length * i + j