从行和列

时间:2016-03-02 13:39:22

标签: java

我想计算任何给定行和列的索引(基数为0),其中行和列为基数1且列数已知,例如2

如果max_columns为2且index为5,则从索引计算行号:

    Row = (index % max_columns) + (int)(index / max_columns)
        = (5 % 2) + (int)(5 / 2)
        = 1 + 2
        = 3 

从索引

计算列号
    Col = max_columns - (index % max_columns)
        = 2 - (5 % 2)
        = 2 - 1
        = 1

问题是如何从索引为0的索引计算行和列。这是为了计算java应用程序中数组的索引。

由Willem Van Onsem提供的正确解决方案'

其中Row为3,Col为2,max_columns为2:

    Index = (Row * max_columns) + Col - max_columns - 1
          = (3 * 2) + 2 - 2 - 1
          = 6 + (-1)
          = 5

2 个答案:

答案 0 :(得分:6)

鉴于每一行都包含 n 列,列和行的从零开始的索引为:

int row = index/n;
int col = index%n;

现在,由于您的rowcol已偏移1,因此您只需将1添加到两者:

int row1 = (index/n)+1;
int col1 = (index%n)+1;

对于反函数,如果rowcol偏移0,则可以将索引计算为:

int index = row*n+col;

或索引偏移1

int index = row1*n+col1-n-1;

答案 1 :(得分:0)

row = (int) (index / max_columns + 1)
col = (index % max_columns + 1)