C# 数字回文检查器的问题

C# 数字回文检查器的问题,c#,palindrome,error-code,C#,Palindrome,Error Code,我的代码有问题,无法找到错误。为什么只有第一次尝试才有效,而在每一次尝试中它都会将我打印为false? 即使我输入了323,例如,这是真的,然后打印“真”,所有内容都是假的,即使是空的scape class Program { public static void Main() { string inputedString = Console.ReadLine(); string reversedString = string.Empty;

我的代码有问题,无法找到错误。为什么只有第一次尝试才有效,而在每一次尝试中它都会将我打印为false?
即使我输入了
323
,例如,这是真的,然后打印“真”,所有内容都是假的,即使是空的scape

class Program
{
    public static void Main()
    {
        string inputedString = Console.ReadLine();
        string reversedString = string.Empty;

        while (true)
        {
            if (inputedString == "END")
            {
                break;
            }

            for (int i = inputedString.Length - 1; i >= 0; i--)
            {
                reversedString += inputedString[i];
            }

            if (reversedString == inputedString)
            {
                Console.WriteLine("true");
            }

            else
            {
                Console.WriteLine("false");
            }
        }
    }
}

您读取循环外的第一个字符串,并且从不在循环内重新读取该字符串。您还没有清除reversedString,因此循环中的每个后续时间都是错误的

public static void Main()
{
        string inputedString; 
        string reversedString;

        while (true)
        {
            inputedString = Console.ReadLine();
            reversedString = string.Empty;

            if (inputedString == "END")
            {
                break;
            }

            for (int i = inputedString.Length - 1; i >= 0; i--)
            {
                reversedString += inputedString[i];
            }

            if (reversedString == inputedString)
            {
                Console.WriteLine("true");
            }

            else
            {
                Console.WriteLine("false");
            }
        }
    }
}

您读取循环外的第一个字符串,并且从不在循环内重新读取该字符串。您还没有清除reversedString,因此循环中的每个后续时间都是错误的

public static void Main()
{
        string inputedString; 
        string reversedString;

        while (true)
        {
            inputedString = Console.ReadLine();
            reversedString = string.Empty;

            if (inputedString == "END")
            {
                break;
            }

            for (int i = inputedString.Length - 1; i >= 0; i--)
            {
                reversedString += inputedString[i];
            }

            if (reversedString == inputedString)
            {
                Console.WriteLine("true");
            }

            else
            {
                Console.WriteLine("false");
            }
        }
    }
}

下面的代码部分应该在“while”循环中


下面的代码部分应该在“while”循环中


Console.ReadLine()不在循环内,因此程序从不读取第二行。将Main()方法的前两行放在循环内,您应该会很好。您还可以在循环外初始化reversedString。实际上,在while循环内,它将第一次正确检查回文“323”。但是,在循环外部初始化两个
字符串
变量。因此,
reversedString
只是不断地追加到(即
323…
)。下面有一些答案向您展示了问题的解决方案,但在您修复它之前,我觉得这将是一个很好的练习,您可以实际逐步完成调试器,并在其循环时查看
InputString
reversedString
的值。这将帮助您更容易地定位这样的错误:)如果您在第一次运行调试程序时在调试程序中逐步检查代码,您会很快注意到这种错误。当您刚开始编码时,这是一件需要学习的事情,但在学习编码的同时开始构建是一项宝贵的技能。查看您的代码本身就是一种教育。Console.ReadLine()不在循环中,因此您的程序从不读取第二行。将Main()方法的前两行放在循环内,您应该会很好。您还可以在循环外初始化reversedString。实际上,在while循环内,它将第一次正确检查回文“323”。但是,在循环外部初始化两个
字符串
变量。因此,
reversedString
只是不断地追加到(即
323…
)。下面有一些答案向您展示了问题的解决方案,但在您修复它之前,我觉得这将是一个很好的练习,您可以实际逐步完成调试器,并在其循环时查看
InputString
reversedString
的值。这将帮助您更容易地定位这样的错误:)如果您在第一次运行调试程序时在调试程序中逐步检查代码,您会很快注意到这种错误。当您刚开始编码时,这是一件需要学习的事情,但在学习编码的同时开始构建是一项宝贵的技能。看到你的代码所做的事情本身就是一种教育。谢谢,它奏效了。。我知道这将是一件愚蠢的事情(我对编码一无所知)仅供参考,在这种情况下,编写一个函数来实际检查回文并让主代码驱动该函数和循环是个好主意。这样,您就不必管理循环的状态和回文检查器的状态。谢谢,它起作用了。。我知道这将是一件愚蠢的事情(我对编码一无所知)仅供参考,在这种情况下,编写一个函数来实际检查回文并让主代码驱动该函数和循环是个好主意。这样,您就不必管理循环的状态和回文检查器的状态。