我正在制作一个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;
}
答案 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
感谢。