C# 在int结尾处查找0的数目

C# 在int结尾处查找0的数目,c#,console-application,C#,Console Application,我想找出整数末尾的0的数目。 假设有人进入2020年,数字应该是1,如果数字是2000,数字应该是3,以此类推 我尝试了以下操作,但没有实现我想要的: Console.WriteLine("Enter Number :"); int num = int.Parse(Console.ReadLine()); int count = 0; for (int i = 1; i < num.ToString().Count(); i++) { //some logic } Console

我想找出整数末尾的0的数目。 假设有人进入2020年,数字应该是1,如果数字是2000,数字应该是3,以此类推

我尝试了以下操作,但没有实现我想要的:

Console.WriteLine("Enter Number :");
int num = int.Parse(Console.ReadLine());
int count = 0;

for (int i = 1; i < num.ToString().Count(); i++)
{
   //some logic
}

Console.WriteLine("Zero in the tail is :");
Console.WriteLine(count);

循环中没有任何变化-因此基本上,在每次迭代中,它要么增加计数,要么不增加计数,每次都会做相同的事情-因此计数要么是字符串的长度,要么是0

在文本操作方面,我能想到的最简单的选择是:

string text = num.ToString();
int count = text.Length - text.TrimEnd('0').Length;
但是,如果不使用文本操作,您可以只使用除法和余数操作:

int count = 0;
// Keep going while the last digit is 0
while (num > 0 && num % 10 == 0)
{
    num = num / 10;
    count++;
}

请注意,这将为数字0生成一个计数0。。。而第一种方法将给出一个计数1,因为0.ToString是0。调整任意一段代码以满足您的要求:

您也可以按数学方法进行

           int n  = int.Parse(Console.ReadLine());
           int totalzero = 0 ;
           while(n > 0){
             int digit = n % 10;
             if(digit == 0)
                 totalzero++;
             else
                break;
             n = n / 10;
           }

您可以通过从后面迭代字符串来实现,如下所示:

var strN = 40300.ToString();
int count = 0;
for (var i = strN.Length - 1; strN[i] == '0'; --i, ++count) ;

Console.WriteLine("Result : " + count);

因为一个32位整数最多可以有9个零,所以您可以非常愉快地展开循环:

int digits =
    num == 0 ? 0 :
    num % 1000000000 == 0 ? 9 :
    num % 100000000 == 0 ? 8 :
    num % 10000000 == 0 ? 7 :
    num % 1000000 == 0 ? 6 :
    num % 100000 == 0 ? 5 :
    num % 10000 == 0 ? 4 :
    num % 1000 == 0 ? 3 :
    num % 100 == 0 ? 2 :
    num % 10 == 0 ? 1 : 0;

这正是我所想的,但字符串的可用操作使新的操作与数学/算法相去甚远。@Ammar:不确定你在这里的意思-我给出了一种字符串方法和一种非字符串方法…正如我所理解的,你的答案没有错,我想说第二个是最好的。@Ammar:你说第二个是什么意思?答案是按你控制的顺序显示的——你的意思是谁的答案?我想阿马尔在写第二个答案时指的是你的第二个方法——非字符串方法。当@Jon Skeet回答你的问题时,你已经解锁了一个遗迹,没有人敢说这是一个家庭作业问题!
int digits =
    num == 0 ? 0 :
    num % 1000000000 == 0 ? 9 :
    num % 100000000 == 0 ? 8 :
    num % 10000000 == 0 ? 7 :
    num % 1000000 == 0 ? 6 :
    num % 100000 == 0 ? 5 :
    num % 10000 == 0 ? 4 :
    num % 1000 == 0 ? 3 :
    num % 100 == 0 ? 2 :
    num % 10 == 0 ? 1 : 0;