0

对于我正在上的一门课,我将创建一个程序来测试字符串是否是回文。我们应该每次只使用一个 8 个字符的字符串并以这种方式对其进行硬编码,但我想超越并制作一些东西来测试任何字符串。不幸的是,这段代码似乎返回 true,老实说,我不确定为什么。

    public static boolean palindromeTest(String input){
    //This portion declares variables necessary for testing, and modifies them if necessary.
    int inputLength=input.length();
    char[] Chars=input.toCharArray();
    for(int j=0; j<inputLength; j++){
        Character.toLowerCase(Chars[j]); //makes all characters in input lower case
        //This portion performs the palindrome test
    }
    if(inputLength%2>0){ //if length is odd
        inputLength=(inputLength-1)/2;
        for(int i=0; i>0; i++){
            if(Chars[i]!=Chars[inputLength-i]) //tests equality first and last in pairs via for loop
                return false; //break;
        }
    }else{ //if length is even
        inputLength=(inputLength)/2;
        for(int i=0; i>0; i++){
            if(Chars[i]!=Chars[inputLength-i]) //tests equality first and last in pairs via for loop
                return false; //break;
        }
    }
    return true; //if all tests are passed, input is indeed a palindrome
}
4

2 回答 2

3

这是因为

for(int i=0; i>0; i++){

for 循环中的代码永远不会被执行,因为 i 永远不会大于 0

编辑: 此外

if(charArray[i]!=charArray[inputLength - i])

有点错误,因为可以说您的字符串是女士,inputLength = inputLength-1使上述条件检查“m”和“d”这不是它应该如何工作

正确的解决方案是

inputLength = inputLength / 2;
int  j= input.length()-1;

for(int i =0; i< inputLength; i++, j--) {

  if(charArray[i]!=charArray[j]) {
    return false;
  }

}
于 2013-09-26T16:47:00.823 回答
0

使用for循环和char数组的回文测试方法如下:

  public static boolean palindromeTest(String input){
             char[] Chars=input.toCharArray();
             for(int i=0,j=Chars.length-1;i<j;i++,j--){
                 if(Chars[i]!=Chars[j]){
                     return false;
                 }
             }
            return true;
            }
于 2018-02-08T09:19:51.600 回答