Инициализация 2D-массива — шифровальная таблица

#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());
    }
}