#java #arrays #encryption #multidimensional-array
#java #массивы #шифрование #многомерный-массив
Вопрос:
Мне нужно создать таблицу шифрования, и я застрял на том, что делать. Этот код:
public class Prog3Cipher {
// INSTANCE VARIABLES
static char [ ] keyList; // VARIABLE DESCRIPTION COMMENT
static char [ ][ ] cipherTable; // VARIABLE DESCRIPTION COMMENT
String alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public Prog3Cipher( char code, String key ) {
String[] keyList = new String []{"key"};
cipherTable = new char[26][26];
cipherTable[0][0] = 'H';
for(int x = 0; x < cipherTable.length; x ){
for(int y = 0; y < cipherTable.length; y ){
cipherTable[x][y] = alpha.charAt(y);
}
}
System.out.println(Arrays.deepToString(cipherTable));
}
выводит:
[[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z], [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z], [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z],
снова и снова. code
и key
будут указаны в, но пока у меня есть ‘H’ и ‘key’ в качестве входных данных. таблица должна выглядеть следующим образом, игнорируя синюю строку и столбец:
code
На рисунке это «H», поэтому элемент [0] [0] равен «H», а алфавит продолжается в соседних строке и столбце. Я буду использовать заполненную таблицу для кодирования и декодирования сообщений, но пока мне просто нужна правильная таблица.
Ответ №1:
Основываясь на изображении, которым вы поделились, вы могли бы сказать, что для каждой ячейки в cipherTable
, символ должен быть символом в позиции индекса строки индекс столбца 7 (произвольное магическое число, по-видимому), по модулю размера алфавита, конечно. Если мы выразим, что это Java:
int offset = 'H' - 'A';
cipherTable = new char[26][26];
for (int x = 0; x < cipherTable.length; x ) {
for(int y = 0; y < cipherTable[0].length; y ) {
cipherTable[x][y] = alpha.charAt((x y offset) % alpha.size());
}
}