0

这是我的一个程序中的一段代码。如果我直接分配sb1= str2我得到一个错误。所以我正在创建两个 StringBuffer 对象

是否有可能仅使用一个 StringBuffer 对象来实现以下要求。

   String str1, str2;
    Scanner scanObj = new Scanner(System.in);
    str1 = scanObj.next();
    StringBuffer sb1 = new StringBuffer(str1);
    sb1.reverse();
    str1 = sb1.toString();
    char[] input1 = str1.toCharArray();
    str2 = scanObj.next();
    StringBuffer sb2 = new StringBuffer(str2);
    sb2.reverse();
    str2 = sb2.toString();
    char[] input2 = str2.toCharArray();
4

3 回答 3

1

使用 sb.setLength(0) 然后重新添加新字符串。这应该保持相同的内存分配。

于 2012-06-14T11:53:39.937 回答
0

你可以写

Scanner scanObj = new Scanner(System.in);
char[] input1 = new StringBuilder(scanObj.next()).reverse().toString().toCharArray();
char[] input2 = new StringBuilder(scanObj.next()).reverse().toString().toCharArray();

您可以使用 setLength(0) 和 append() 重用 StringBuilder,但它会更复杂。

于 2012-06-14T11:52:50.360 回答
0

您不能StringBuffer直接分配给,String因为有不同的对象。这应该可以帮助您:

String yourStr = "some value";
StringBuffer buffer = new String(yourStr);
StringBuffer other = buffer;

您可以将任何String值放入StringBuffer对象构造函数中。

于 2012-06-14T11:53:13.173 回答