有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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”为我提供的正确解决方案

其中行为3,列为2,最大列为2:

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

共 (2) 个答案

  1. # 1 楼答案

    假设每行由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;
    

    或者如果索引是offset1

    int index = row1*n+col1-n-1;
    
  2. # 2 楼答案

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