我想要解密某个文本。当我遇到字符串中的一个字母时,我想用字母表中的下一个字母替换它。然后在接下来的一轮中,我希望替换下一个字母。用其他字符替换字符
甲 - >乙
的k - >升
然后在第二轮所以应尽量
一个 - >ç
的k - >米
问题带字符的是它包含各种奇怪的字符,当你遇到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
插件/编辑:(使用循环时)但其余的工作。 – Nils
另一个小小的增加,我认为-90 + 65导致-25应该是-26。否则:一个ascii值为122,用1移动的'z'变为123.然后在边缘方法中,减去25得到98,即'b'。但它需要成为'a'。 – Nils