[英]How do I reverse a string in java by creating a new temporary string?
以下代码中的错误是什么? 我无法识别它显示索引 0 越界异常。
public class stringBuilders{
public static void main(String[] args)
{
StringBuilder str = new StringBuilder("Shubham");
StringBuilder str2= new StringBuilder();
int j=0;
for(int i = str.length()-1; i>=0 ; i--)
{
str2.setCharAt(j++,str.charAt(i));
}
System.out.print(str2);
}
}
由于您已经从头到尾进行迭代,因此您只需将 append 个字符添加到新的空字符串构建器中。 setChar()
仅用于替换现有字符。
public class StringBuilders {
public static void main(String[] args) {
String str = "Shubham";
StringBuilder str2 = new StringBuilder();
for (int i = str.length() - 1; i >= 0; i--) {
str2.append(str.charAt(i));
}
System.out.println(str2.toString());
}
}
给
$ java StringBuilders.java
mahbuhS
您还没有为str2
字符串声明一个值。
for 循环试图在str2
中的索引j=0
处找到一个字符以设置str2
的值i
,但它找不到。
因此错误。
为此,您需要将 str2 的值声明为长度 >= str1。 即,如果str1 = "0123456"
,则str2应至少为0123456
或更多。
除了使用StringBuilder
来设置char
之外,您还可以使用String
来设置 append。
String str1 = new String("Shubham");
String str2 = new String();
int iter = str1.length() -1;
for(int i=iter; i>=0; i--) {
str2 += str1.charAt(i);
}
System.out.println(str2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.