int num = Convert.ToInt32(Console.ReadLine());
Run Code Online (Sandbox Code Playgroud)
使用上面的代码我得到正确的整数值,我能够对这个数字进行操作并获得正确的结果.
但是使用下面的代码,为什么Convert.ToInt32(o)方法不会将其转换为整数值.为什么我们需要减去48.
int[] numarr = number.ToString().Select(o => Convert.ToInt32(o)-48).ToArray();
Run Code Online (Sandbox Code Playgroud)
如果我没有减去48,我没有得到正确的整数值.
请任何人解释为什么这是?是否每次都需要这样做?因为在其他地方,我计算结果而不减去48,我得到了正确的结果.
我正在做一个程序来打印一个数字中出现的次数.这是我的代码:
Console.WriteLine("Enter the number:");
int number = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter the number to search:");
int searchnumber = Convert.ToInt32(Console.ReadLine());
int cnt = 0;
int[] numarr = number.ToString().Select(o => Convert.ToInt32(o)-48).ToArray();
for (int i = 0; i < numarr.Length; i++)
{
Console.WriteLine(numarr[i]);
}
for (int i = 0; i < numarr.Length; i++)
{
if (numarr[i] == searchnumber)
{
cnt++;
}
}
Console.WriteLine("Number of occurence of given number is:{0}", cnt);
Run Code Online (Sandbox Code Playgroud)
因为要将数字转换为字符串,所以检索的整数实际上是字符串中字符的Unicode代码点.根据ASCII码表,0字符从位置48开始.
所以你实际上找到了一个解决方法来将字符转换为它们的整数表示.如果您只是想以较少的hacky方式获取数字,可以使用此答案,该答案使用模数运算符.或者char.ToNumericValue在原始字符串上,正如Time Schmelter在评论中提出的那样.
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |