首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在处理过程中将二维数组转换为一维数组

在处理过程中将二维数组转换为一维数组
EN

Stack Overflow用户
提问于 2012-11-06 09:31:24
回答 2查看 1.4K关注 0票数 0

我正在尝试将一个二维数组展平为一个一维数组。这就是我目前所拥有的。我想要展平我的数组,使一维数组看起来像这样

代码语言:javascript
复制
   int[] oneDim = {1, 2, 3, 4, 5, 6, 7, 8 ,9 ,10, 11, 12};

这就是我目前所拥有的。我真的不知道该怎么做。感谢所有的帮助和意见。

代码语言:javascript
复制
   void setup() {
   int[][] twoDim = { {1, 2, 3, 4},
                      {5, 6, 7, 8},
                      {9, 10, 11, 12} }; 

   int[] oneDim = new int[twoDim.length];
   for (int i = 0; i < twoDim.length; i++) {
      for (int j = 0; j < twoDim[i].length; j++) {
        oneDim[j] += twoDim[j][i];
      }                  
    }
   println(oneDim);
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-06 09:42:31

代码语言:javascript
复制
int[][] twoDim = { {1, 2, 3, 4},
                   {5, 6, 7, 8},
                   {9, 10, 11, 12} }; 
int x = twoDim.length;
int y = twoDim[0].length;
int[] oneDim = new int[x*y];
for (int i = 0; i < x; i++) {
  for (int j = 0; j < y; j++) {
    oneDim[i*y + j] = twoDim[i][j];
  }
}
println(oneDim);
票数 1
EN

Stack Overflow用户

发布于 2012-11-06 09:37:59

这里有一个提示:将二维映射为一维的常用公式是:width*y + x,其中width是每行中元素的数量(在您的示例中,假设它们的长度都相同,在本例中为4,假设它们的长度都相同),'x‘是列上的迭代器(在您的示例中是j),y是行上的迭代器(对于您来说是i)。

您需要检查一维数组的大小是否足以接受twoDim的所有元素。它看起来不够大-至少需要twoDim[i].length * twoDim.length元素的长度。

您当前一次又一次地编写同一行数据,因为对于外部循环的每次迭代,您都会在内部循环中为oneDim[j]赋值。尝试使用我在本答案开头建议的公式为oneDim赋值(一旦它具有合适的大小)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13243125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档