我正在用Java编写加密程序,我需要将输入字符串更改为某个值。当我到达Z并且需要将其更改为A而不是ASCII代码中的下一个字符时,我遇到了问题。我如何将它从Z改为A?我知道我还需要更改它被加密的值,但是我在如何将ASCII中的Z更改为A上的空白。
答案 0 :(得分:5)
假设您要将所有字母移至n
:
((letter - 'A' + n) % 26) + 'A'
要解码:
((letter - 'A' + 26 - n) % 26) + 'A'
答案 1 :(得分:2)
不确定为什么使用ASCII。只需使用char
char ch = ...
if (ch >= 'A' && ch < 'Z') ch++;
else if (ch == 'Z') ch = 'A';
else if (ch >= 'a' && ch < 'z') ch++;
else if (ch == 'z') ch = 'z';
答案 2 :(得分:0)
正如sverre所指出的那样:
String s = "AGJAJAJMLVJHNJAFVZVZJADFYAQ";
StringBuffer e = new StringBuffer();
char[] cs = s.toCharArray();
for (int i = 0; i < cs.length; i++) {
e.append((char)('A' + (cs[i] - 'A' + 1) % 26));
}
System.out.println(s);
System.out.println(e.toString());
答案 3 :(得分:0)
如果有这个诀窍,请告诉我:
public String encode(String str) {
String res = new String();
for (char c : str) {
if (Character.isUpperCase(c))
(c == 'Z') ? res.append('A') : res.append(c+1);
else throw new Exception(c + " is not a A-Z character");
}
return res;
}