繁体   English   中英

如何通过创建新的临时字符串来反转 java 中的字符串?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM