-1

以下代码应反转字符串,如 hans->snah

StringBuffer hilfsbuffer = new StringBuffer(1);

for (int i = 0; i < buffer.length()/2; i++) {
  hilfsbuffer.setCharAt(0, buffer.charAt(i)); //Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
  buffer.setCharAt(i, buffer.charAt(buffer.length()-1-i));
  buffer.setCharAt(buffer.length()-1-i, hilfsbuffer.charAt(0)); //Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
}

在评论中,您可以看到错误。

如果需要,请询问更多详细信息。

4

3 回答 3

5

问题是当你创建一个StringBuffer这样的:

StringBuffer hilfsbuffer = new StringBuffer(1);

缓冲区本身的容量为 1,但底层证券String仍为空。因此,当您尝试这样的事情时:

hilfsbuffer.setCharAt(0, buffer.charAt(i));

0 超出范围,你得到你的StringIndexOutOfBoundsException.

从文档:

StringBuffer(整数容量)

构造一个没有字符且具有指定初始容量的字符串缓冲区。

于 2013-10-23T17:36:11.793 回答
1

尝试这个。StringBuilder可以为您反转它。

StringBuilder sb = new StringBuilder();
sb.append("hans");
sb.reverse();
System.out.println(sb.toString());

编辑:

正如已经指出的,StringBuffer还提供了一个reverse()方法。

于 2013-10-23T17:35:45.153 回答
0

您可以使用 StringBuffer.reverse() 方法来反转字符串,从而避免循环和错误。

于 2013-10-23T17:38:15.237 回答