繁体   English   中英

使用for循环,如何反转字符串?

[英]Using for loops, how to reverse a string?

该代码不起作用。 你能告诉我怎么了,为什么?

package exer0403e08;


public class EXER0403E08 {
    public static void main(String[] args) {
        String str= "hello";
        System.out.println(str);
        char[]strchar = str.toCharArray();
        int first;
        int last=5;

        System.out.println("The reversed is: ");
        for (first=1; first<=5; first++){
            strchar[first]=strchar[last];


            last--;

        } 
        str=String.valueOf(strchar);
        str=str.toUpperCase();
        System.out.println(str);


    }

}

答案是“ OLLO”,我要使其成为“ OLLEH”。

您循环有几个问题。 而且您误解了数组索引。

您正在迭代和修改同一数组。 因此,对于数组,奇怪的行为和索引将从零开始。

所以固定代码将是

public static void main(String[] args) {
        String str = "hello";
        System.out.println(str);
        char[] strchar = str.toCharArray();
        int first;
        int last = 4;

        System.out.println("The reversed is: ");
        for (first = 0; first < 5; first++) {
            strchar[first] = str.charAt(last);

            last--;

        }
        str = String.valueOf(strchar);
        str = str.toUpperCase();
        System.out.println(str);

    }

更新:

演示链接http://ideone.com/GfgDZ3

您可以这样编写自己的方法:

    public static String reverse(String str)
     {
     String reversed = new String();

     for ( int j = str.length()-1; j >= 0; j-- )
         reversed += str.charAt(j);

     return reversed;
     }

然后尝试reverse(“ Hello”);

您在Java中有更好的方法来反转字符串。 请检查以下答案:

您可以使用此:

new StringBuilder(hi).reverse().toString()

或者,对于JDK 1.5之前的版本,请使用java.util.StringBuffer而不是StringBuilder它们具有相同的API。 感谢评论员指出StringBuilder是当今的首选。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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