Шифр подстановок кодирует только тогда, когда сообщение написано в нижнем регистре. Как сделать регистр шифра нечувствительным к регистру?

#java #encryption #encoding #substitution #case-insensitive

Вопрос:

 public static String Encrypt(String plaintext, String code) {   
    
    String encryptedString = "";
    
    char[] alphabet = { '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' };
    
    char[] encoded = code.toCharArray();
    
    for (int i = 0; i < plaintext.length(); i  ) {
        for (int j = 0; j < 26; j  ) {
            if (plaintext.charAt(i) == alphabet[j]) 
            {
                encryptedString  = encoded[j];
                break;
            }

            // if there are any special characters
            // add them directly to the string
            if (plaintext.charAt(i) < 'a' || plaintext.charAt(i) > 'z') 
            {
                encryptedString  = plaintext.charAt(i);
                break;
            }
        }
    }
    return encryptedString.toUpperCase();
}
 

}

Приведенный выше метод используется для кодирования сообщения, данного пользователем, однако, когда пользователь вводит сообщение в нижнем регистре, оно кодируется только в том случае, если пользователь ввел сообщение в верхнем регистре, то сообщение печатается без кодирования. Например, если бы сообщение было «Я ГОЛОДЕН», оно бы напечатало «Я ГОЛОДЕН», но если бы сообщение было «я голоден», оно бы закодировало сообщение. Я не уверен, как сделать так, чтобы не имело значения, написал ли я сообщение в верхнем или нижнем регистре, оно все равно должно кодировать его независимо от того, в каком случае написано сообщение.

Комментарии:

1. Подсказка: char c = Character.toLowerCase(plaintext.charAt(i));

2. Что такое код в подписи метода? Почему вы не используете переменную «алфавит»?

3. Вы получите индекс связанного исключения при попытке использовать код длиной менее 26

4. Код-это ключ, который будет использоваться для кодирования сообщения

Ответ №1:

Ваш alphabet только в нижнем регистре. Любой символ, не найденный в alphabet , рассматривается как специальный символ. Это означает, что все прописные буквы , которых нет alphabet , рассматриваются как специальные символы.

Комментарии:

1. Я пытался сделать это в обоих случаях, чтобы его не рассматривали как специальные символы, но это все равно не работает