String无法转换为StringBuffer

时间:2016-04-26 04:55:11

标签: java

我正在制作一个playfair密码,我遇到一个错误,即String无法转换为StringBuffer。如何让我的程序工作?或者如何在不破坏代码的情况下将StringBuffer转换为String?

public static StringBuffer addFiller (StringBuffer input)
 {       
     for( int x = 0; x < input.length() - 1; x++)
     {
         if(input.substring(x+1, 1).equals(input.substring(x, 1)))
         {
           input = input.insert(x+1, "Q");
         }
         if("Q".equals(input.substring(x, 1)) && "Q".equals(input.substring(x+1, 1)))
         {
            input = input.insert(x+1, "Z");
         }
     }
     return input;
 }

 public static String modifyPlaintext(String keyword)
{      
    keyword = keyword.toUpperCase();
    keyword = keyword.trim();
    keyword = keyword.replace(" ","");
    //StringBuffer.toString(addFiller);
    keyword = addFiller(keyword); // error starts here and it says that keyword = java.lang.String "ALLISKNOWNFLYATONCE" even though I didn't initialize it. What does it mean?


    if (keyword.length() % 2 != 0)
        {
            keyword += "Q";
        }
        keyword = insertSpaceInSpecificNumber(2, keyword, ' ');

    return keyword;
}

2 个答案:

答案 0 :(得分:2)

1)创建StringBuffer对象并将其传递给addFilter()

2)将StringBuffer对象按addFilter()转换为toString()的字符串。

keyword = addFilter(new StringBuffer(keyword)).toString();

答案 1 :(得分:0)

String也是最终的,也是不可变的

所以,这个类不能被任何其他类扩展或继承。所以,这两个类之间没有IS-A关系。 所以,

  

字符串永远不会被转换或引用到除java.lang.Object之外的任何其他类。

StringBuffer提供了一个构造函数,您可以通过该构造函数将String转换为StringBuffer对象。

  public java.lang.StringBuffer(java.lang.String); //pass string as an argument. StringBuffer object will you get.

所以在这里你应该尝试这个代码

addFilter(new StringBuffer(keyword)).toString();//try this code

感谢。