C#如何检查回文号码

发布于 2025-02-06 20:54:59 字数 583 浏览 2 评论 0原文

我试图解决这个问题:检查数字是否是回文,我知道互联网上有很多示例,但我不明白为什么我的代码不起作用。

using System;
class HelloWorld {
    static void Main() {
        int number = 122;
        int reverse = 0;
        while(number!=0){
            reverse = (reverse*10) + number%10;
            number/=10;
        }
        Console.Write(reverse);
        if(number==reverse){
            Console.WriteLine("The number is palindrom");
        }
        else{
            Console.WriteLine("The number isn't palindrom");
        }
    }
}

我知道我不应该使用 int number = 122; ,但这是我了解代码是否正常的方式。

I tried to solve this problem: check if the number is a palindrome, I know that there are a lot of examples on the Internet, but I don't understand why my code isn't working.

using System;
class HelloWorld {
    static void Main() {
        int number = 122;
        int reverse = 0;
        while(number!=0){
            reverse = (reverse*10) + number%10;
            number/=10;
        }
        Console.Write(reverse);
        if(number==reverse){
            Console.WriteLine("The number is palindrom");
        }
        else{
            Console.WriteLine("The number isn't palindrom");
        }
    }
}

I know that I shouldn't use int number = 122; but this was my way to understand if the code is working.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

携君以终年 2025-02-13 20:54:59

您应该保存原始号码。在您的情况下,<代码>编号与反向号码进行比较时始终是0

using System;
public class HelloWorld {
    public static void Main() {
        int number = 1222111;
        int tmp_number = number;
        int reverse = 0;
        while(tmp_number!=0){
            reverse = (reverse*10) + tmp_number%10;
            tmp_number/=10;
        }
        Console.Write(reverse);
        if(number == reverse){
            Console.WriteLine(" The number is palindrom");
        }
        else{
            Console.WriteLine(" The number isn't palindrom");
        }
    }
}

You should save your original number. In your case number is always 0 when comparing to the reverse number.

using System;
public class HelloWorld {
    public static void Main() {
        int number = 1222111;
        int tmp_number = number;
        int reverse = 0;
        while(tmp_number!=0){
            reverse = (reverse*10) + tmp_number%10;
            tmp_number/=10;
        }
        Console.Write(reverse);
        if(number == reverse){
            Console.WriteLine(" The number is palindrom");
        }
        else{
            Console.WriteLine(" The number isn't palindrom");
        }
    }
}
孤者何惧 2025-02-13 20:54:59

在循环时,您会更改号码的值,直到它是0。所以你总是比较

if (0==reverse){

Within you while loop you alter the value of number until it's 0. So you always end up comparing

if (0==reverse){
别挽留 2025-02-13 20:54:59

魔术发生在循环中:(反向*10)“将结果移动”到下一个位置。 数字%10基本上是其余部分。使用号码/= 10您进入下一个位置,直到什么都没有。

使用调试器以了解会发生什么是有用的。

The magic happens in the loop: (reverse*10) "shifts" your result to the next place. number%10 is basically the remainder. With number/=10 you go to the next place until there is nothing left.

It's useful to use the debugger in order to understand what happens.

千柳 2025-02-13 20:54:59

将其转换为字符串会更容易:

using System;
using System.Linq;
                    
public class Program
{
    public static void Main()
    {
        int number = 1221;
        
        // convert to string, reverse it, join it, parse it to an int
        int reversed = int.Parse( string.Join("", number.ToString().Reverse()));
        
        if(number == reversed)
            Console.WriteLine("The number is palindrom");
        else
            Console.WriteLine("The number isn't palindrom");
    }
}

您不需要将其解析回INT,但是您的示例使用整数。

It would be easier to convert it to a string:

using System;
using System.Linq;
                    
public class Program
{
    public static void Main()
    {
        int number = 1221;
        
        // convert to string, reverse it, join it, parse it to an int
        int reversed = int.Parse( string.Join("", number.ToString().Reverse()));
        
        if(number == reversed)
            Console.WriteLine("The number is palindrom");
        else
            Console.WriteLine("The number isn't palindrom");
    }
}

You don't need to parse it back to an int, but your example uses integers.

末蓝 2025-02-13 20:54:59

这是我从可用于多种编程语言的通用假码中遵循的一种方法

class Solution{
public static void Main(string[] args){
   int number = 123;
   if(IsPalindrome(number))
      Console.WriteLine(number+" is a palindrome number");
   else
       Console.WriteLine(number+" is not a palindrome number");
  }
static bool IsPalindrome(int m){
    //convert parameter to string
    string inp = m.ToString();
    //reverse using a loop
    string rev="";
    for(int i=inp.Length-1;i>-1;i--){
        rev += inp[i];
    }
    //check and return 
    if(rev==inp){return true;}else{return false;}
  
    }
}

This is rather an approach I have followed from general pseudocodes available for multiple programming languages for implementing a palindrome program

class Solution{
public static void Main(string[] args){
   int number = 123;
   if(IsPalindrome(number))
      Console.WriteLine(number+" is a palindrome number");
   else
       Console.WriteLine(number+" is not a palindrome number");
  }
static bool IsPalindrome(int m){
    //convert parameter to string
    string inp = m.ToString();
    //reverse using a loop
    string rev="";
    for(int i=inp.Length-1;i>-1;i--){
        rev += inp[i];
    }
    //check and return 
    if(rev==inp){return true;}else{return false;}
  
    }
}
寄居者 2025-02-13 20:54:59
public class Palindrome
{
    /// <summary>
    /// Palindrome: Is a word, phrase, or sequence that reads 
    ///             the same backward as forward
    /// </summary>
    /// <param name="number"></param>
    /// <returns></returns>
    public static bool CheckPalindrome(int number)
    {
        int forward = number;
        int reverse = 0;
        while(forward != 0)
        {
            reverse = (reverse * 10) + forward % 10;
            forward /= 10;
        }
        return (reverse == number);
    }
}
public class Palindrome
{
    /// <summary>
    /// Palindrome: Is a word, phrase, or sequence that reads 
    ///             the same backward as forward
    /// </summary>
    /// <param name="number"></param>
    /// <returns></returns>
    public static bool CheckPalindrome(int number)
    {
        int forward = number;
        int reverse = 0;
        while(forward != 0)
        {
            reverse = (reverse * 10) + forward % 10;
            forward /= 10;
        }
        return (reverse == number);
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文