【发布时间】:2018-03-14 12:14:43
【问题描述】:
我正在尝试查找整数(从右到左)的第n位。我是编程新手,但一直在使用这个网站作为参考 - 直到现在我一直拒绝传递我的问题,但我至少无法理解这个问题,即使经过数小时的努力。
这是我到目前为止的代码,但是对于 FindDigit(int 5673, int 4) 它给出的是 53 而不是 5,FindDigit(int 5673, int 3) 给出 51 而不是 6
public class DigitFinder
{
public static int FindDigit(int num, int nth)
{
num = Math.Abs(num);
string answer = Convert.ToString(num);
int i = answer.Length;
return ans[i-nth];
}
}
我完全不明白为什么它返回一个 2 位数字。任何指导都非常感谢!
【问题讨论】:
-
您需要将其转换回 int。它为您提供 ascii 值
-
您正在返回数字的字符代码。
-
不要通过字符串/字符。使用 / 和 % : int dig = (num / (int)Math.Pow(10,nth)) % 10
-
旁注:带有参数
num和nth的方法FindDigit如果实际上从右到左返回第n 个数字,则根本没有意义。如果有人想使用你的方法,他会认为它是错误的。名字很重要! -
哎呀,实际上我上面的评论是错误的。更正:
int dig = (num / (int)Math.Pow(10,nth-1)) % 10;
标签: c#