我的方法基于此链接Promoting letters in a string to next letter in java
public static void main(String[] args) {
int shiftValue = 5;
String foo = "abcdefxyz";
String bar = "";
for (char c : foo.toCharArray()) {
bar += Character.toString((char) (((c - 'a' - shiftValue) % 26)
+ 'a'));
}
System.out.println(bar);
}
我如何获得输出" yzabc"而不是" _`abc" ?
答案 0 :(得分:1)
你可以简单地向左移动2,并确保捕捉到负面的情况(在这种情况下,a和b)。所以在你的for循环中,使用它(我希望很长但很容易阅读):
switch (c) {
case 'a':
bar += 'y';
break;
case 'b':
bar += 'z';
break;
default:
bar += (char) (c - 2);
}
或者,如果你想缩短
bar += c > 'b' ? (char) (c-2) : (char) (c+24);
说明:如果字符大于b,则可以减去2(例如c-2 = a),否则加24(例如a + 24 = y)