字符数组和循环错误

时间:2013-09-26 16:44:17

标签: java arrays string for-loop methods

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

    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
}

2 个答案:

答案 0 :(得分: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;
  }

}

答案 1 :(得分: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;
            }