列字符串读取字符串

时间:2016-10-19 09:40:00

标签: java arrays multidimensional-array

我正在尝试使用列主要排序从char数组中将String对象读入2d数组:

这是我尝试过的:

int x = 0;
for (int column = 0; column < matrix[0].length; column++) {//cols
     for (int row = 0; row < matrix.length; row++, x++) {//rows
         if(matrix[row][column] == null) {
             if (x < ciphertextCharacters.length) {
                 matrix[row][column] = Character.toString(inputChars[x]);
             }
         }
    }
}

给定一个输入数组(inputChars = ['t','t','g','e','i','s','n'])得到的2D数组应为:

+---+----+----+
| t | e  |  s |
+---+----+----+
| t | i  |  n |
+---+----+----+
| g | *  |  * |
+---+----+----+

请注意,在此代码运行之前,“*”字符串已经在数组中 - 这就是为什么我只在索引为空时添加新值。

目前,我得到的2D数组是:

+---+----+----+
| t | e  |  n |
+---+----+----+
| t | i  |null|
+---+----+----+
| g | *  |  * |
+---+----+----+

这不是我需要的。

1 个答案:

答案 0 :(得分:2)

问题是您根据条件的结果将inputChars[x]放入matrix[row][column],但x无条件地增加:

for (int row = 0; row < matrix.length; row++, x++) {
//                                            ^^^

使用赋值的条件增量替换循环中的无条件增量应解决此问题:

for (int row = 0; row < matrix.length; row++) {
    ...
    matrix[row][column] = Character.toString(inputChars[x++]);
    ...
}