Я хочу, чтобы расшифровка определенного текста. Когда я встречаю букву в строке, я хочу заменить ее следующей буквой в алфавите. Затем в следующем раунде я хочу заменить вторую букву.Подстановка символов другими символами
а -> б
к -> л
Затем во втором туре он должен попытаться
а -> С
K -> M
Проблема с символами состоит в том, что он включает в себя все виды странных символов, а когда вы сталкиваетесь с az и пытаетесь его заменить, он заменяется странным символом.
Любой, кто может помочь мне сделать какой-то круговой список из A-Z? В следующем фрагменте я создаю список, который содержит от a до z. В цикле выбирается символ, его индекс просматривается и «настраивается», и новый символ должен быть восстановлен. Но это не сработает. (Одна причина, по которой перечень является не круговой)
public static void decipher(){
String cyphertext = "aVaqrprzoreoeratraWhyvhfraJnygreUbyynaqreqrgjrroebrefinaRqvguZnetbganneNzfgreqnzNaarjvytenntzrrxbzraznnezbrgabtrrarragvwqwrovwbznoyvwiraBznmnyurgzbrvyvwxuroorabzNaarabtrracnnejrxraqnnegrubhqrafpuevwsgRqvguSenaxvarraoevrsnnaTregehqAnhznaauhaiebrtrerohhezrvfwrvaSenaxshegnzZnva";
char[] plaintext = new char[cyphertext.length()];
List<Character> a2z = new ArrayList<Character>(26);
for (char c = 'A'; c <= 'Z'; c++){
a2z.add(Character.valueOf(c));
}
for(int i = 1; i < 26; i++){
for(int j = 0; j < cyphertext.length(); j++){
char currentChar = cyphertext.charAt(j);
int newCharIndex = a2z.indexOf(currentChar)+i;
plaintext[j] = a2z.get(newCharIndex);
}
}
}
Но что, если вы переводите капитал V 12 раз, а его значение сдвигается с 86 на 98, а затем программа думает, что это нижний регистр b. – Nils
Addon/Edit: (При использовании цикла) Но все работает. – Nils
Одно небольшое дополнение, я думаю -90 + 65, результат которого -25 должен быть -26. В противном случае: a 'z' с значением ascii 122, сдвинутым с 1, становится 123. Затем в методе ребра вычитает 25 результат в 98, что является «b». Но это должно быть «а». – Nils