使用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);

    }

更新:

演示 link http://ideone.com/GfgDZ3

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

你可以使用这个:

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

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

你可以这样写你自己的方法:

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

然后尝试反向("Hello");