java 字符串无法转换为 StringBuffer

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/36855538/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-03 01:56:40  来源:igfitidea点击:

String cannot be converted to StringBuffer

java

提问by CodeCodeCode

I am making a playfair cipher and I encountered an error that String cannot be converted to StringBuffer. How can I make my program work? Or how can I convert StringBuffer to String without compromising the code?

我正在制作一个 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;
}

回答by Kaustubh Khare

1) Create StringBufferobject and pass it to addFilter().

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

2) Convert StringBufferobject return by addFilter()into String by toString().

2) 将StringBuffer对象 return byaddFilter()转换为 String by toString()

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

回答by Vikrant Kashyap

Stringis final and immutable too

String也是最终的和不可变的

so , This class cannot be extended or inherited by any other class. So, There is no IS-ARelationship between these two classes. So,

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

String never be converted or referenced to any other Class except java.lang.Objectdirectly .

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

but StringBufferprovides a Constructor through which you can convert a Stringinto a StringBufferObject.

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

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

so here you should try this code

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

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

Thanks.

谢谢。