以下代码应该像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
}
在评论中,您可以看到错误。
如果需要,请询问更多详情。
答案 0 :(得分:5)
问题在于,当您创建StringBuffer
时,如此:
StringBuffer hilfsbuffer = new StringBuffer(1);
缓冲区本身的容量为1,但基础String
仍为空。因此,当你尝试这样的事情时:
hilfsbuffer.setCharAt(0, buffer.charAt(i));
0超出范围,您获得了StringIndexOutOfBoundsException
。
来自文档:
StringBuffer(int capacity)
构造一个字符串缓冲区,其中没有字符和指定的初始容量。
答案 1 :(得分:1)
试试这个。 StringBuilder 可以为您反转。
StringBuilder sb = new StringBuilder();
sb.append("hans");
sb.reverse();
System.out.println(sb.toString());
编辑:
正如已经指出的, StringBuffer 还提供了 reverse()方法。
答案 2 :(得分:0)
您可以使用StringBuffer.reverse()方法来反转字符串,从而避免循环和错误。