字符串反向问题

时间:2011-07-08 02:29:51

标签: java

我编写了一个java程序来反转字符串的内容并显示它们。

这是代码..

import java.util.*;
class StringReverse
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        System.out.print("Enter a string to be reversed :");
        String input = in.next();  
        char[] myArray = new char[input.length()];
        myArray = input.toCharArray();
        int frontPos=0,rearPos=(myArray.length)-1;
        char tempChar;
        while(frontPos!=rearPos)
        {
            tempChar=myArray[frontPos];
            myArray[frontPos]=myArray[rearPos];
            myArray[rearPos]=tempChar;
            frontPos++;
            rearPos--;
        }
        System.out.println();
        System.out.print("The reversed string is : ");
        for(char c : myArray)
        {
            System.out.print(c);
        }

    }
}

现在程序适用于长度大于或等于5的字符串。但是如果我给出一个长度为4的字符串作为输入,我得到一个ArrayIndexOutOfBounds异常。可能是什么问题?

4 个答案:

答案 0 :(得分:8)

问题不在于输入长度为4,而是长度4是偶数长度,因此您的停止条件永远不会发生。也就是说,对于偶数长度的字符串,frontpos 永远不会等于rearpos

您应该确保frontpos 而不是rearpos,将while(frontPos!=rearPos)更改为while(frontPos < rearPos)应该清除。

答案 1 :(得分:3)

只用一个计数器可能更容易编写。

for(int i = 0; i < myArray.length; i++) {
  char temp = myArray[i];
  myArray[i] = myArray[myArray.length - i - 1];
  myArray[myArray.length - i - 1] = temp;
}
String reversed = new String(myArray);

答案 2 :(得分:2)

为什么你让逻辑如此复杂。它可以很容易地完成:

char temp[] = new char[str.length()];
    int k = 0;

    for(int i = str.length()-1 ; i >= 0 ; i--)
    {
        temp[k] = str.charAt(i);
        k++;
    }
System.out.println(new String(temp));

答案 3 :(得分:0)

public String reverse(String str)
{
    String rev = " ";
    for (int i = 0 ; i < str.length(); i++)
    {
        rev = str.charAt(i) + rev;
    }
    return rev.trim();
}

输入:

December

输出:

rebmeceD
相关问题