Java 如何使用Stringbuilder和for循环反转字符串
我设法将字符串反转为字符数组,还使用Stringbuilder上的.reverse方法,设法使用另一个字符串和for循环(我了解到这不是一个好主意,因为它会影响性能),但我不知道如何使用Stringbuilder和for循环反转字符串。 它给了我一个错误——“左侧必须是一个变量”。还尝试为Stringbuilder设置长度,但看起来我遗漏了一些内容。我试图在Stringbuilder的括号外设置索引,因为它们是用于参数的,但我只是在猜测怎么做,还尝试了.appendJava 如何使用Stringbuilder和for循环反转字符串,java,Java,我设法将字符串反转为字符数组,还使用Stringbuilder上的.reverse方法,设法使用另一个字符串和for循环(我了解到这不是一个好主意,因为它会影响性能),但我不知道如何使用Stringbuilder和for循环反转字符串。 它给了我一个错误——“左侧必须是一个变量”。还尝试为Stringbuilder设置长度,但看起来我遗漏了一些内容。我试图在Stringbuilder的括号外设置索引,因为它们是用于参数的,但我只是在猜测怎么做,还尝试了.append public class T
public class Task1 {
public static void main(String[] args) {
String str = "Reverse me";
StringBuilder printStr = new StringBuilder();
int j = 0;
for (int i = str.length()-1; i > 0; i--) {
printstr(j) = str[i];
}
}
}
好的,您犯了多个错误,您试图使用括号访问索引,您没有迭代整个字符串,因为您的循环条件是i>0,它应该是i>=0,并且您的循环是错误的(忽略括号),您可以组合append()和charAt()方法来执行您需要的操作:
for (int i = str.length()-1; i >= 0; i--) {
printStr.append(str.charAt(i));
}
我们从字符串的最后一个索引一直到索引0,因此我们从字符串的末尾开始,并将每个字符附加到StringBuilder中。最后,您得到了反向字符串。好的,您犯了多个错误,您试图使用括号访问索引,您没有迭代整个字符串,因为您的循环条件是i>0,它应该是i>=0,并且您的循环是错误的(忽略括号),您可以组合append()和charAt()执行所需操作的方法:
for (int i = str.length()-1; i >= 0; i--) {
printStr.append(str.charAt(i));
}
我们从字符串的最后一个索引一直到索引0,因此我们从字符串的末尾开始,并将每个字符附加到StringBuilder中。最后你得到了你的反向字符串。我认为你的思路是对的,我想做一些改变:首先,我们能够指定
StringBuilder
的长度,因为我们知道它将与我们正在反向的字符串的长度相同
不必在整个数组中循环,只要数组的一半就足以执行基本上只是切换字符的操作。因此,最右边的字符现在是最左边的字符,这节省了一点计算
public static void main(String[] args) throws IOException {
String str = "Reverse me";
StringBuilder printStr = new StringBuilder();
printStr.setLength(str.length());
for(int i =0; i<str.length()/2;i++){
char left = str.charAt(i);
final int fromRight = str.length() - i - 1;
printStr.insert(i, str.charAt(fromRight));
printStr.insert(fromRight, left);
}
}
publicstaticvoidmain(字符串[]args)引发IOException{
String str=“反转我”;
StringBuilder printStr=新的StringBuilder();
printStr.setLength(str.length());
对于(int i=0;i我认为您的观点是正确的,我想做一些更改:首先,我们能够指定StringBuilder
的长度,因为我们知道它将与我们正在反转的字符串的长度相同
不需要在整个数组中循环,只要数组的一半就足以执行基本上只是切换字符的操作。因此最右边的字符现在是最左边的字符,这节省了一点计算
public static void main(String[] args) throws IOException {
String str = "Reverse me";
StringBuilder printStr = new StringBuilder();
printStr.setLength(str.length());
for(int i =0; i<str.length()/2;i++){
char left = str.charAt(i);
final int fromRight = str.length() - i - 1;
printStr.insert(i, str.charAt(fromRight));
printStr.insert(fromRight, left);
}
}
publicstaticvoidmain(字符串[]args)引发IOException{
String str=“反转我”;
StringBuilder printStr=新的StringBuilder();
printStr.setLength(str.length());
对于(inti=0;ipublic类HelloWorld{
公共静态void main(字符串[]args){
System.out.println(反向限制(“示例”);
}
公共静态字符串反向限制(字符串str){
StringBuilder=新的StringBuilder();
对于(int i=str.length()-1;i>=0;i--){
附加(str.charAt(i));
}
返回builder.toString();
}
}
公共类HelloWorld{
公共静态void main(字符串[]args){
System.out.println(反向限制(“示例”);
}
公共静态字符串反向限制(字符串str){
StringBuilder=新的StringBuilder();
对于(int i=str.length()-1;i>=0;i--){
附加(str.charAt(i));
}
返回builder.toString();
}
}
您使用括号访问索引,错误!使用charAt方法和append。请注意,仅颠倒字符顺序不是正确的解决方案。如果存在代理项对,您将断开所有代理项对。StringBuilder
特别处理这种情况:您使用括号访问索引,错误!使用charAt方法和p结束。请注意,仅反转字符顺序不是正确的解决方案。如果存在任何代理项对,您将断开所有代理项对。StringBuilder
特别处理此类情况: