java 字符串反转算法

java string reverse algorithm

我正在尝试编写我自己的字符串反向算法(我知道这已经存在于 java 但我这样做是为了教育)。下面的代码是我到目前为止所拥有的。它只输出一半的字符串反转。我做了一些调试,原因是它正在 stringChars2 同时更改 stringChars 但我不知道为什么会这样我只是想更改 stringChars。非常感谢所有帮助。

编辑 我的问题不是 "how to reverse a string" 之前有人问过...但是为什么我的对象在没有说明的情况下发生变化,下面的答案完全解释了这个问题。

public static void main(String[] args) {
    //declare variables
    Scanner input = new Scanner(System.in);
    String myString = "";
    int length = 0, index = 0, index2 = 0;

    //get input string
    System.out.print("Enter the string you want to reverse: ");
    myString = input.next();

    //find length of string
    length = myString.length()-1;
    index2 = length;

    //convert to array
    char[] stringChars = myString.toCharArray();
    char[] stringChars2 = stringChars;

    //loop through and reverse order
    while (index<length) {

        stringChars[index] = stringChars2[index2];

        index++;
        index2--;
    }

    //convert back to string
    String newString = new String(stringChars);

    //output result
    System.out.println(newString);

    //close resources
    input.close();

}
char[] stringChars = myString.toCharArray();
char[] stringChars2 = stringChars;

在第二行,您将 stringChars2 分配给与 stringChars 相同的对象,因此基本上它们是同一个对象,当您更改第一个时,您也会更改第二个。

试试这样:

char[] stringChars = myString.toCharArray();
char[] stringChars2 = myString.toCharArray();

您可以阅读更多相关信息here

一切都没有必要。 您可以简单地使用 for 循环反转字符串(在方法中):

public String reverseString(String str)
{
    String output = "";
    int len = str.length();
    for(int k = 1; k <= str.length(); k++, len--)
    {
        output += str.substring(len-1,len);
    }
    return output;
}