加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将一维数组迭代为二维数组

发布时间:2020-12-14 05:07:43 所属栏目:Java 来源:网络整理
导读:我有, int[10] oneDim = {1,2,3,4,5,6,7,8,9,10},index = 0; 如图here所示,我们从原点创建二维的.但是如何在(index = 0; index 10; index)中迭代我的oneDim,以便在没有创建新索引的情况下可以得到我的列索引和行索引? 我希望它像这样打印它的索引到一个二维
我有,
int[10] oneDim = {1,2,3,4,5,6,7,8,9,10},index = 0;

如图here所示,我们从原点创建二维的.但是如何在(index = 0; index< 10; index)中迭代我的oneDim,以便在没有创建新索引的情况下可以得到我的列索引和行索引?
我希望它像这样打印它的索引到一个二维数组(2×5):

0,0
0,1
1,0
1,1
2,0
2,1
3,0
3,1
4,0
4,1

我认为这里的主要问题是获取列索引和行索引,而不创建二维索引.不是吗

解决方法

如果你想要行主序,给列rowIndex,列columnIndex,并且伪造(缺少一个更好的术语)具有numberOfColumns列的二维数组,公式是
rowIndex * numberOfColumns + columnIndex.

如果你想要行主序,列columnIndex并且伪造(缺少一个更好的术语)具有numberOfRow行的二维数组,公式是

columnIndex * numberOfRows + rowIndex.

所以,假设行主序:

int[10] oneDim = {1,10};
int rows = 2;
int columns = 5;
for (int row = 0; row < rows; row++) {
    for (int column = 0; column < columns; column++) {
        System.out.println(row + "," + column + ": " + oneDim[row * columns + column]);
    }
}

输出:

0,0: 1
0,1: 2
0,2: 3
0,3: 4
0,4: 5
1,0: 6
1,1: 7
1,2: 8
1,3: 9
1,4: 10

并且如果您坚持使用单个for循环进行索引,假定以row-major顺序,您想要的公式如下所示:

int column = index % numberOfColumns;
int row = (index - column) / numberOfColumns;

如果您使用的是列主要顺序,则您需要的公式如下所示:

int row = index % numberOfRows;
int column = (index - row) / numberOfRows;

所以,

int[10] oneDim = {1,10};
int rows = 2;
int columns = 5;
for(int index = 0; index < 10; index++) {
    int column = index % columns;
    int row = (index - column) / columns;
    System.out.println(row + "," + column + ": " + oneDim[index]);
}

将输出

0,4: 10

如预期.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读