【问题标题】:Convert 1D String array to 2D String array将一维字符串数组转换为二维字符串数组
【发布时间】:2015-08-26 22:13:03
【问题描述】:

我有这个字符串数组:

String[] spltstr = {"a","b","c","d","e","f",...,"z"};

我需要将其中的每个值都放入这样的数组中:

String[][] matrix;

我知道两个数组的维度,作为输出,我需要我的矩阵看起来像:

matrix={{"a","b","c","d","e","f"},
        {"g","h","k","l","m","n"},
        {...................."z"}};

你能告诉我这是否可能吗? 我遇到了问题,因为第一个数组的维度是“n”,第二个数组是“m”x5。

如果您认为有更好的方法来完成这项工作,我将不胜感激。

【问题讨论】:

  • 是的,有可能。试一试。

标签: java arrays string multidimensional-array


【解决方案1】:

有可能。

考虑映射。

n  (i,j)
0->(0,0)
1->(0,1)
2->(0,2)
3->(0,3)
4->(0,4)
5->(1,0)
6->(1,1)
7->(1,2)

等等……

所以想法是将n转换成一对(i,j)

【讨论】:

  • 谢谢,我创建了一个函数来执行下一个:for (int i = 0; i < matrix.length; i++) {for (int j = 0; j < matrix[0].length; j++) {matrix[i][j]=spltstr[index];index++;}}我在循环之前将索引设置为 0,但它仍然返回java.lang.ArrayIndexOutOfBoundsException,我不明白为什么,知道吗?
  • index 可能超出范围。如果数组是一个矩形并且有 6 列,那么为了适应 26 个字符,您需要 5 行。这提供了 30 个插槽。这将迫使index 超出spltstr 有效范围。另一种可能性是您已经考虑到这一点并构建了一个锯齿状数组,最后一行没有那么多单元格。那么matrix[i][j] 可能超出范围,因为内部 for 循环总是引用矩阵第一行的长度。
  • 是的,事实上我发现我的索引比ij 计数器增长得更快,我通过添加if(index<spltstr.length) 解决了这个问题,这样我确保index 变量不会' t 超出范围。感谢您的帮助@bombe
【解决方案2】:

好吧,如果你知道数组的大小,你可以写一个while循环来填充矩阵。

在循环外有 3 个变量,分别称为 Row、Col 和 Out。你知道每行有 X 个字母。因此,如果您已填充矩阵的第 (X-1) 个索引,则检查您的 while 循环,将 row 更新为 row++,并将 col 更新为 0。循环的每次迭代,您将执行 Col++ 以及 Out++。

由于 Row 和 Col 和 Out 正在更新,您只需将 matrix[Row][Col] 设置为等于 spltstr[Out]。

一旦字母表中的字母用完,您将完成问题。

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多