如何使用Stringbuilder和for循环

时间:2017-12-10 21:50:39

标签: java

我设法反转一个String,使它成为一个char数组,同时在Stringbuilder上使用.reverse方法,设法用另一个String和一个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];

        }
    }

}

3 个答案:

答案 0 :(得分:3)

我认为你是在正确的方面,只是我改变的一些事情:首先,我们能够指定StringBuilder的长度,因为我们知道它的长度是相同的正如String我们正在逆转。

没有必要遍历整个数组,只需要一半的数组就可以执行基本上只是切换字符的操作。所以最右边的角色现在是最左边的角色,这节省了一些计算。

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);
    }
}

以下是角色切换基本上如何工作的直观表示:可以找到更多信息here

enter image description here

答案 1 :(得分:1)

好的,所以你犯了多个错误,你试图通过使用括号来访问索引,你没有迭代整个字符串,因为你的循环条件是i&gt; 0,它应该是i&gt; = 0,你的循环是错误的(忽略括号),你可以结合append()和charAt()方法来做你需要的:

    for (int i = str.length()-1; i >= 0; i--) {
        printStr.append(str.charAt(i));
    }

我们从你的字符串的最后一个索引到索引0,所以我们从字符串的结尾开始,然后我们将每个字符附加到我们的StringBuilder。最后你有反向的字符串。

答案 2 :(得分:0)

    public class HelloWorld {
    public static void main(String[] args) {

        System.out.println(reverseString("Example"));
    }

    public static String reverseString(String str) {
        StringBuilder builder = new StringBuilder();

        for (int i = str.length() - 1; i >= 0; i--) {
            builder.append(str.charAt(i));
        }
        return builder.toString();
    }
}