为什么';我的c#for循环是否被输入?

为什么';我的c#for循环是否被输入?,c#,for-loop,palindrome,C#,For Loop,Palindrome,我是C#新手,我正在尝试一种简单的isAlindrome方法。基本上,我的for循环从未被输入。我试着给它一个字符串“hannah”,但它从来没有在for循环体中打印一个Console.writeline方法调用。但是for循环之前的两个WriteLine调用都为“hannah”返回true,因此它应该进入for循环并从for循环体打印出至少一条语句。我的线圈怎么了 private static Boolean isPalindrome(string s) { int counter =

我是C#新手,我正在尝试一种简单的isAlindrome方法。基本上,我的for循环从未被输入。我试着给它一个字符串“hannah”,但它从来没有在for循环体中打印一个Console.writeline方法调用。但是for循环之前的两个WriteLine调用都为“hannah”返回true,因此它应该进入for循环并从for循环体打印出至少一条语句。我的线圈怎么了

private static Boolean isPalindrome(string s)
{
    int counter = 0;
    if (s.Length == 1)
    {
        return true;
    }

    Console.WriteLine(s[counter]==s[(s.Length - counter - 1)]); //this returns true
    Console.WriteLine((counter != (s.Length / 2))); //this returns true

    for (; (counter != (s.Length / 2)) & (s[counter] == (s.Length - counter - 1)); counter++)
    {
        Console.WriteLine("s[counter is {0} and s.length-counter-1 is", s[counter], s[(s.Length -                   counter - 1)]);

        //The above line never prints; why doesn't my for loop get entered?
    }

    if((counter == (s.Length / 2))) {
        return true;
    }

    return false;
}

将条件的第二部分更改为
(s[counter]==s[s.Length-counter-1])

否则,您将比较
s[counter]
的数字表示形式与
s.Length-counter-1
,而不是该索引下的字符。

请尝试此

public bool IsPalindrome( string s )
{
  bool isPalindrome = true ;
  int i = 0 ;
  int j = s.Length ;
  while ( j > i && isPalindrome )
  {
    isPalindrome = s[i++] == s[--j] ;
  }
  return isPalindrome ;
}
从任意一端开始,依次比较每个字符。假设成功。当指针收敛或比较失败时,测试结束