我编写了一个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异常。可能是什么问题?
答案 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