Java简单凯撒加密返回空字符串

我正在写一个可以对一个输入字符串进行凯撒加密的方法。本人现在有的代码如下:

public static String caesarCipher (String cipher, int shiftAmount) {
    
    StringBuilder str = new StringBuilder();
    
    for (int index = 0; index < cipher.length; index = index + 1 ){
      
      char letter = cipher.charAt(index);
      
      if (Character.isUpperCase(letter)){
        letter = (char)(((int) letter - 'A' + shiftAmount) % 26 + 'A');
      }
      else if (Character.isLowerCase(letter)){
        letter = (char)(((int) letter - 'a' + shiftAmount) % 26 + 'a');
      }
      else if (Character.isDigit(letter)){
        letter = letter + shiftAmount;
      }
      str.append(letter);
    }
    
    return str.toString();
  }

但是在我测试这串代码的时候,总是返回显示为 “ ” 的空的字符串。测试用的代码如下:

> HW2.caesarCipher("NiHao", 1)
""

请问这是什么问题,应该怎么解决啊。

string类没有length这个属性,只有length()方法,其次 letter = letter + shiftAmount 是要采用强制转换 改成letter = (char) (letter + shiftAmount)

public static String caesarCipher (String cipher, int shiftAmount) {
        StringBuilder str = new StringBuilder();
        for (int index = 0; index < **cipher.length()**; index = index + 1 ){
            char letter = cipher.charAt(index);
            if (Character.isUpperCase(letter)){
                letter = (char)(((int) letter - 'A' + shiftAmount) % 26 + 'A');
            }
            else if (Character.isLowerCase(letter)){
                letter = (char)(((int) letter - 'a' + shiftAmount) % 26 + 'a');
            }
            else if (Character.isDigit(letter)){
                **letter = (char) (letter + shiftAmount);**
            }
            str.append(letter);
        }
        return str.toString(); 
    }