private static String shift(String p, int shift){
String s = "";
int len = p.length();
for(int x = 0; x < len; x++){
char c = (char)(p.charAt(x) + shift);
if (c == ' '){ // this right here isn't working
s += " ";
} else if (c > 'z'){
s += (char)(p.charAt(x) - (26-shift));
}
else {
s += (char)(p.charAt(x) + shift);
}
}
return s;
}
示例输出:qer $ hyhi(“$”曾经是一个空格)。为什么空间不能像它应该留下的空间?相反,它仍然遵循转换过程。
答案 0 :(得分:1)
问题在于您将已经移位的角色与空间进行比较。
有几种方法可以解决这个问题,其中一个是以下方法(解决其他一些小问题):
private static String shift(String p, int shift){
StringBuilder s = new StringBuilder(); //better using a mutable object than creating a new string in each iteration
int len = p.length();
for(int x = 0; x < len; x++){
char c = p.charAt(x); //no need for casting
if (c != ' '){ // this should work now
c += shift;
if (c > 'z'){ //we assume c is in the 'a-z' range, ignoring 'A-Z'
c -= 'z';
}
}
s.append(c);
}
return s.toString();
}