Я пытался создать модуль cesher cesher в java, но по какой-то причине код, похоже, не работает.Если я возьму операторы if, чтобы проверить, был ли их номер ASCII плюс ключ буквенным, он ничего не выводит, в противном случае это просто странные буквы.
Я предполагаю, что между всеми преобразованиями, между символами и целыми числами,где-то между данными теряется.
public static String caesarCipher(String text, int key) {
char[] charText = new char[text.length()];
for (int i = 0; i < text.length(); i++) charText[i] = text.charAt(i);
for (int i = 0; i < charText.length; i++) {
if (Character.isUpperCase(charText[i])) {
charText[i] = (char) (Character.getNumericValue(charText[i]) + key);
if (Character.getNumericValue(charText[i]) > 90)
charText[i] = (char) (Character.getNumericValue(charText[i]) - 26);
if (Character.getNumericValue(charText[i]) < 65)
charText[i] = (char) (Character.getNumericValue(charText[i]) + 26);
}
if (Character.isLowerCase(charText[i])) {
charText[i] = (char) (Character.getNumericValue(charText[i]) + key);
if (Character.getNumericValue(charText[i]) > 122)
charText[i] = (char) (Character.getNumericValue(charText[i]) - 26);
if (Character.getNumericValue(charText[i]) < 97)
charText[i] = (char) (Character.getNumericValue(charText[i]) + 26);
}
}
String finalText = new String(charText);
return finalText;
}
Итак, сначала я копирую объект String в массив символов.Затем я проверяю один за другим элементы массива char, является ли он прописными или строчными.В обоих случаях элемент преобразуется в его числовое значение, значение ключа добавляется к нему, а затем преобразуется обратно в элемент char.В случае, если числовое значение плюс ключ больше или меньше, чем цифры, которые алфавитные буквы представляют в таблице ASCII, значение снова преобразуется обратно в его числовое представление и 26 добавляется или вычитается.В конце массив char передается в объект String и возвращается.