为什么这种剖腹产不会发生变化

时间:2017-02-26 02:10:16

标签: java char

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(“$”曾经是一个空格)。为什么空间不能像它应该留下的空间?相反,它仍然遵循转换过程。

1 个答案:

答案 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();
}