#java #arrays #multidimensional-array
#java #массивы #многомерный массив
Вопрос:
Я пытаюсь прочитать строковые объекты в 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 | * | * |
--- ---- ----
Обратите внимание, что перед запуском этого кода строки «*» уже находятся в массиве — и именно поэтому я добавляю новые значения только тогда, когда индекс равен нулю.
В настоящее время результирующий 2D-массив, который я получаю, является:
--- ---- ----
| t | e | n |
--- ---- ----
| t | i |null|
--- ---- ----
| g | * | * |
--- ---- ----
Это не то, что мне нужно.
Комментарии:
1. вы увеличиваете свой
x
слишком часто. переходx
от объявления цикла к концуif
блока
Ответ №1:
Проблема в том, что вы помещаете 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 ]);
...
}