Java 如何使用Stringbuilder和for循环反转字符串

Java 如何使用Stringbuilder和for循环反转字符串,java,Java,我设法将字符串反转为字符数组,还使用Stringbuilder上的.reverse方法,设法使用另一个字符串和for循环(我了解到这不是一个好主意,因为它会影响性能),但我不知道如何使用Stringbuilder和for循环反转字符串。 它给了我一个错误——“左侧必须是一个变量”。还尝试为Stringbuilder设置长度,但看起来我遗漏了一些内容。我试图在Stringbuilder的括号外设置索引,因为它们是用于参数的,但我只是在猜测怎么做,还尝试了.append public class T

我设法将字符串反转为字符数组,还使用Stringbuilder上的.reverse方法,设法使用另一个字符串和for循环(我了解到这不是一个好主意,因为它会影响性能),但我不知道如何使用Stringbuilder和for循环反转字符串。 它给了我一个错误——“左侧必须是一个变量”。还尝试为Stringbuilder设置长度,但看起来我遗漏了一些内容。我试图在Stringbuilder的括号外设置索引,因为它们是用于参数的,但我只是在猜测怎么做,还尝试了.append

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;i
public类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
特别处理此类情况: