给出以下字符串:
String s = "Qba'g sbetrg gb qevax lbhe Binygvar";
我想要的输出是:
Don't forget to drink your ovaltine
我的代码:
public static String decrpyt(String s){
String ans = "";
for (int i = 0; i<s.length(); i++) {
int x = s.charAt(i);
if (x <= 105) {
char c = ((char) (x + 13));
ans += c;
} else {
char c = ((char) (x - 13));
ans += c;
}
}
return ans;
}
它返回:
don4t-forget-to-drink-_our-ovaltine
我需要做什么才能获得所需的输出?
最佳答案
正如评论中提到的,您正在更改所有字符,而不仅仅是字母。仔细考虑您需要修改的字母的字符范围。将 x
声明为 char
,这样您就不必考虑实际的数值范围。
A-M => N-Z Action: += 13
a-m => n-z Action: += 13
N-Z => A-M Action: -= 13
n-z => a-m Action: -= 13
(all others) Action: No change
这可以用三种情况来表达:
if ((x >= 'a' && x <= 'm') || (x >= 'A' && x <= 'M')) {
// Add 13
} else if ((x >= 'n' && x <= 'z') || (x >= 'N' && x <= 'Z')){
// Subtract 13
} else {
// Use as is
}
关于java - 如何解密这个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781201/