我正在尝试使用列主要排序从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 | * | * |
+---+----+----+
这不是我需要的。
答案 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++]);
...
}