【发布时间】:2017-07-25 03:26:29
【问题描述】:
我正在做一个caesar-cypher。尝试将字符串中的所有字符替换为移位字母表中的某个字符。
这是我目前的代码
public static String caesarify(String str, int key){
String alphabetNormal = shiftAlphabet(0);
String alphabetShifted = shiftAlphabet(key);
for (int i =0; i < str.length();i++){
for (int c =0; c < alphabetNormal.length(); c++) {
if (str.charAt(i) == alphabetNormal.charAt(c)) {
char replacement = alphabetShifted.charAt(c);
str.replace(str.charAt(i), replacement);
}
}
}
return str;
}
public static String shiftAlphabet(int shift) {
int start =0;
if (shift < 0) {
start = (int) 'Z' + shift + 1;
} else {
start = 'A' + shift;
}
String result = "";
char currChar = (char) start;
for(; currChar <= 'Z'; ++currChar) {
result = result + currChar;
}
if(result.length() < 26) {
for(currChar = 'A'; result.length() < 26; ++currChar) {
result = result + currChar;
}
}
return result;
}
我不知道为什么“ILIKEDONUTS”等字符串在caesarified 时不会更改为“JMJLFEPOVUT”。
【问题讨论】:
-
"cypher 是 Neo4j 的图形查询语言"。不要将“密码”标签用于一般密码问题。我已经删除了标签。
-
为了帮助您,如果我们知道实际输出 是什么 而不仅仅是它不是什么,将会很有帮助。
标签: java string char caesar-cipher