我正试图将字符串对象读取为2d数组,从char
数组,使用列主要排序:
这是我尝试过的:
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 | * | * |
+---+----+----+
请注意,在此代码运行之前,"*"字符串已经在数组中-这就是为什么我只在索引为空时添加新值。
目前,我得到的结果二维数组是:
+---+----+----+
| t | e | n |
+---+----+----+
| t | i |null|
+---+----+----+
| g | * | * |
+---+----+----+
这不是我需要的
问题是您根据条件的结果将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++]);
...
}