【问题标题】:java string reverse algorithmjava字符串逆向算法
【发布时间】:2017-10-15 00:22:16
【问题描述】:

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

编辑我的问题不是之前问过的“如何反转字符串”……而是为什么我的对象在没有指示的情况下发生变化,下面的答案完全解释了这个问题。

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

}

【问题讨论】:

标签: java string algorithm reverse


【解决方案1】:
char[] stringChars = myString.toCharArray();
char[] stringChars2 = stringChars;

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

试试这样的方法:

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

您可以阅读更多关于它的信息here

【讨论】:

  • 谢谢,我现在意识到这是一个愚蠢的错误,但你真的帮了我。
  • 很高兴为您提供帮助,欢迎来到 Stack Overflow。如果答案解决了您的问题,请将其标记为已接受 :)
【解决方案2】:

所有这些都是不必要的。 您可以使用 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 2015-02-06
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    相关资源
    最近更新 更多