[![скрин][1]][1][
Мне нужно придать ему вид, как на экране, но я уверен, что сделал это неправильно.
Дело в том, что есть строка str, в данном случае это (я люблю маму очень большую и люблю машину) и после ввода этой строки в матрицу нужно разбить ее на группы по 5 букв.
Результат должен быть следующим (irlyo bvieg maynm dolto hveer cvaer).
public static void main(String[] args) {
String[][] matrixA;
matrixA = new String[2][15];
matrixA[0][0] = "i";
matrixA[0][1] = "l";
matrixA[0][2] = "o";
matrixA[0][3] = "v";
matrixA[0][4] = "e";
matrixA[0][5] = "m";
matrixA[0][6] = "y";
matrixA[0][7] = "m";
matrixA[0][8] = "o";
matrixA[0][9] = "t";
matrixA[0][10] = "h";
matrixA[0][11] = "e";
matrixA[0][12] = "r";
matrixA[0][13] = "v";
matrixA[0][14] = "e";
matrixA[1][0] = "r";
matrixA[1][1] = "y";
matrixA[1][2] = "b";
matrixA[1][3] = "i";
matrixA[1][4] = "g";
matrixA[1][5] = "a";
matrixA[1][6] = "n";
matrixA[1][7] = "d";
matrixA[1][8] = "l";
matrixA[1][9] = "o";
matrixA[1][10] = "v";
matrixA[1][11] = "e";
matrixA[1][12] = "c";
matrixA[1][13] = "a";
matrixA[1][14] = "r";
for (int i = 0; i < matrixA.length; i++) {
for (int j = 0; j < matrixA[i].length; j++) {
System.out.print(matrixA[i][j] + "\t");
}
System.out.println();
}
}
@GilbertLeBlanc Почему бы просто не предположить, что строка не всегда состоит из 30 символов? Почему важно, какова цель программы? Иван не просил делать диаграмму, я полагаю, что это было просто в помощь читателю.




Я вижу внизу у вас есть два цикла for, которые зацикливаются на матрице. Все, что нам нужно сделать, чтобы достичь алгоритма, о котором вы просите, - это перебрать матрицу, но с перевернутыми размерами. Затем проверьте, не пора ли добавить пробел, используя модуль. Попробуйте эту функцию, дайте мне знать, если у вас есть какие-либо вопросы.
public static String getGroups(String[][] matrix, int groupSize) {
String output = "";
int matrixWidth = matrix.length;
int matrixHeight = matrix[0].length;
int k = 0;
for (int i = 0; i < matrixHeight; i++) {
for (int j = 0; j < matrixWidth; j++) {
k++;
output += matrix[j][i];
if (k % groupSize == 0) output += " ";
}
}
return output;
}
Все, что вам нужно сделать, это вызвать getGroups, передать matrixA и передать groupSize 5. Вот как это будет выглядеть: System.out.println(getGroups(matrixA, 5));
Также предупреждаю, что в этой строке не хватает двойной кавычки ("") matrixA[0][10] = h";
Это означает, что полный код должен выглядеть так:
public static void main(String[] args) {
String[][] matrixA;
matrixA = new String[2][15];
matrixA[0][0] = "i";
matrixA[0][1] = "l";
matrixA[0][2] = "o";
matrixA[0][3] = "v";
matrixA[0][4] = "e";
matrixA[0][5] = "m";
matrixA[0][6] = "y";
matrixA[0][7] = "m";
matrixA[0][8] = "o";
matrixA[0][9] = "t";
matrixA[0][10] = "h";
matrixA[0][11] = "e";
matrixA[0][12] = "r";
matrixA[0][13] = "v";
matrixA[0][14] = "e";
matrixA[1][0] = "r";
matrixA[1][1] = "y";
matrixA[1][2] = "b";
matrixA[1][3] = "i";
matrixA[1][4] = "g";
matrixA[1][5] = "a";
matrixA[1][6] = "n";
matrixA[1][7] = "d";
matrixA[1][8] = "l";
matrixA[1][9] = "o";
matrixA[1][10] = "v";
matrixA[1][11] = "e";
matrixA[1][12] = "c";
matrixA[1][13] = "a";
matrixA[1][14] = "r";
for (int i = 0; i < matrixA.length; i++) {
for (int j = 0; j < matrixA[i].length; j++) {
System.out.print(matrixA[i][j] + "\t");
}
System.out.println();
}
System.out.println(getGroups(matrixA, 5));
}
public static String getGroups(String[][] matrix, int groupSize) {
String output = "";
int matrixWidth = matrix.length;
int matrixHeight = matrix[0].length;
int k = 0;
for (int i = 0; i < matrixHeight; i++) {
for (int j = 0; j < matrixWidth; j++) {
k++;
output += matrix[j][i];
if (k % groupSize == 0) output += " ";
}
}
return output;
}
Как можно показать результат только один раз?
Что ты имеешь в виду? Он возвращает результат только один раз?
не 5 раз, а хочу 1 раз теленок
Вы пробовали запустить функцию? 5 в моем примере — это просто размер группы, это означает, что вы можете изменить его на размер группы 6, 2, 10 и т. д.
@Ivan Kolisnik, судя по твоему сообщению своя: The result should be as follows (irlyo bvieg maynm dolto hveer cvaer). Это точно, который выдает приведенный выше код. А что такое calf?
Я хочу отображать закодированный текст только один раз
Эта линия (irlyo bvieg maynm dolto hveer cvaer)
Когда вы запускаете функцию, сколько раз она «отображает» ее для вас?
Я добавил результат компиляции ниже
Убедитесь, что вы не вызвали функцию внутри цикла for внизу. Убедитесь, что он находится вне цикла for, так он будет вызываться только один раз.
Тогда моя матрица меняет вид. Посмотрите на экран выше. Вывод больше не в столбцах
как исправить? Знаете ли вы?
Не удаляйте циклы for, просто вызовите функцию после циклов for. Я отредактировал свой ответ, чтобы показать вам, как именно должен выглядеть основной метод.
@IvanKolisnik, чтобы обработать указанную вами строку: i love my mother very big and love car и использовать метод getGroups(), предоставленный @MorganS42, вам нужно сделать что-то вроде этого:
Создайте матрицу (например, образец, который вы показали)
String strg = "i love my mother very big and love car";
strg = strg.replaceAll("\\s+", ""); // Remove all whitespaces!
int columns = strg.length() / 2;
String[][] matrix = new String[2][columns];
int indexer = 0;
for (int row = 0; row < matrix.length; row++) {
for (int column = 0; column < matrix[row].length; column++) {
matrix[row][column] = Character.toString(strg.charAt(indexer));
indexer++;
}
}
// Display Current Generated Matrix...
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
if (matrix[i][j].isEmpty()) {
break;
}
System.out.print(matrix[i][j]);
}
System.out.println();
}
System.out.println();
Отобразите зашифрованную строку (согласно вашим спецификациям):
/* Get the desired grouping from the generated
matrix and displsy it to console... */
String encryptedString = getGroups(matrix, 5);
System.out.println(encryptedString);
Вывод на консоль должен быть:
ilovemymotherve
rybigandlovecar
irlyo bvieg maynm dolto hveer cvaer
Следовательно... если строка для шифрования была:
I love my mother very big but I love my car bigger!
Вывод консоли будет:
Ilovemymotherverybig
butIlovemycarbigger!
Ibluo tvIel moyvm eomty hcear rvbei rgygb eirg!
Дайте мне знать, если это сработает для вас, я удалю этот пост.
Напишите, пожалуйста, как это будет выглядеть. полный код
Ввод
Stringвсегда 30 символов? Какова цель вашей программы? Вы должны создать диаграмму или только окончательный результат?