Java反向字符串方法

时间:2018-03-06 08:35:29

标签: java string

我想学习Java。我需要创建一个名为reverse的方法,它获取一个字符串并返回一个字符串(但顺序相反)。这是我试过的。你能修复代码并解释我做错了什么吗?还请给我一些关于Java良好开端的建议。谢谢!

var loadedProduct = dbContext.Product.Find(yourProductId);
IPromotionalOffer pOffer = Factory.Instance.Create<IPromotionalOffer>();
            pOffer.Name = "Holi";
            pOffer.Products.Add(loadedProduct);
            pOffer.Add();

9 个答案:

答案 0 :(得分:3)

您可以使用它来反转字符串,您不需要使用自己的方法

new StringBuilder(word).reverse().toString()

如果要使用解决方案,必须将int j = a.length()更改为int j = a.length()-1;

答案 1 :(得分:2)

固定代码是

public class Test {
    public static String reverse(String a) {
        int j = a.length();
        char[] newWord = new char[j];
        for (int i = 0; i < a.length(); i++) {
            newWord[--j] = a.charAt(i);
        }
        return new String(newWord);
    }

    public static void main(String a[]) {

        String word = "abcdefgh";
        System.out.println(reverse(word));
    }
}

与其他人提到的一样,数组索引从0开始。因此,如果数组的大小为5,例如它有索引0,1,2,3,4。它没有索引5.

对于长度为5的字符串示例,我所做的代码更改newWord[--j] = a.charAt(i);将按顺序分配给索引4,3,2,1,0。

关于在Java中取得良好开端,我认为你可以试试https://softwareengineering.stackexchange.com/。这个网站不适合这种事情。

答案 2 :(得分:0)

这是新Java开发人员的常见难题。

您缺少的是数组中的最后一个条目位于a.length-1 位置。同样适用于Strings

这里有一个改进的版本来演示。

public static String reverse(String a) {
    char[] newWord = new char[a.length()];
    for (int i = 0, j = a.length() - 1; i < a.length(); i++, j--) {
        newWord[j] = a.charAt(i);
    }
    return new String(newWord);
}

答案 3 :(得分:0)

您已经使用自己的方法走在正确的轨道上了。我要对你说的一件事是,你不需要使用一个字符数组,然后使用return new String(newWord);之类的东西。在我看来,对于初学Java来说,这太复杂了。

相反,您可以创建一个空字符串,并在循环浏览要反转的字符串中的所有字符时,继续将字符附加到字符串上。

所以你的for循环,因为你正在翻转单词,应该从被反转的单词的末尾开始(在这种情况下为a)并向后工作到索引位置0(即。这个词的开头被颠倒了)。

试试这个,看看这对你有意义:

public static String reverse(String a) {
    String reversedWord = "";
    for (int index = a.length() - 1; index >= 0; index --) {
        reversedWord += a.charAt(index);
    }
    return reversedWord;  
}

然后,从a结束开始,一次向后处理一个字符(因此使用index --),直到我们到达index已经消失的点为止超出索引位置0处的字符(index >= 0的中间条件)。

在每个索引位置,我们只是从a字符串中取出字符并将其附加到reversedWord字符串。

希望这有帮助!如果你被困在这个问题上,请随意提出任何其他问题。

答案 4 :(得分:0)

for循环中,正文必须如此 newWord[--j] = a.charAt(i);。这是因为如果数组的长度为8,则其索引为0-7。所以我们首先递减j然后将它用作数组指针。

答案 5 :(得分:0)

  public class Test {
        public static String reverse(String a) {
            int size= a.length();//size of string
            char[] newWord = new char[size];//intialize  
            for (int i = size-1,j=0; i >=0 ; i--,j++) {//loop start from 7 to 0
                newWord[j] = a.charAt(i);// and reverse string goes from 0 to 7
            }
            return new String(newWord);
        }

        public static void main(String a[]) {

            String word = "abcdefgh";
            System.out.println(reverse(word));
        }
    }

答案 6 :(得分:0)

static void reverse {
    String word = "Hello World";
    StringBuilder str = new StringBuilder(word);
    str.reverse();
    System.out.println(str);
}

或者您可以

new StringBuilder(word).reverse().toString()

答案 7 :(得分:0)

public static void main(String[] args) {

    String input = "hello world";
    String output = new String();

    for (int i = input.length() - 1; i >= 0; i--) {
        output = output + input.charAt(i);
    }

    System.out.println(output);

}

答案 8 :(得分:0)

}