java "Cannot resolve method ' setCharAt(int, 字符 )'"

标签 java encryption error-handling compiler-errors

我正在尝试创建一个凯撒密码,一切都应该正常,但我收到了一个错误。

这是我的加密方法:

public static String encrypt(String plainText, int rotation) {
    // TODO: implement
    for (int i = 0; i < plainText.length(); i++ ){
        char currentChar = plainText.charAt(i);
        //ASCII 97 == a && 122 == z
        if (currentChar >= 97 && currentChar <= 122){
            char newChar = (char) (currentChar + rotation);
            if(newChar < 97){
                newChar = (char) (97 + (newChar - 122));
            }
            plainText.setCharAt(i, newChar);
        }
    }
    return plainText.toString(); 

运行代码后,它返回此错误:

 Error:(26, 26) java: cannot find symbol
 symbol:   method setCharAt(int,char)
 location: variable plainText of type java.lang.String

我该如何解决这个问题?

最佳答案

看看setCharAt -> 你可以清楚地看到它属于 StringBuilder 而不是 String

如果您想在String使用它,您可以首先创建一个StringBuilder,然后调用.toString() 在该对象上:

StringBuilder plainText = new StringBuilder("Some string");
plainText.setCharAt(i, newchar);
String myStr = plainText.toString();

这似乎也是您最初计划做的事情,因为在 return 语句中您有 plainText.toString(),并且没有理由调用如果它已经是一个 String 开头,则存在 toString()

关于java "Cannot resolve method ' setCharAt(int, 字符 )'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35404938/

相关文章:

c - 仅使用 RSA 加密来加密长文本字符串

c - 用于测试错误处理程序的错误 C 代码

exception-handling - 实现Android Admob时的错误处理

java - (如何)我能让这个数组代码看起来更好吗? (Codingbat - Array-1 sum2)

java - 文本流向 HTML

Java Rest Service POST 对 InnerClasses 属性存在分歧

java - Spring MVC 应用

ios - iOS 中使用 ECB 的 3DES 加密/解密

visual-studio-2008 - 如何在Visual Studio 2008中关闭预生成错误检查(尤其是在使用SSIS时)?

Java密码加密