public class Test {
static int nthDigit(int number, int n)
{
int digit = 0;
for (int i = 0; i <= n; i++) { // Assumes n is >= 0
digit = number % 10;
number /= 10;
}
return digit;
}
public static void main(String args[]) {
System.out.println(nthDigit(2314, 4));
}
}
现在该程序的输出为0
当我进行单元测试时,它首先返回4然后分别返回1,3,2 .......
我不知道我在哪里做错了是否还有其他方法可以获得输出4,1,3,2 分别....
答案 0 :(得分:1)
你也可以这样做:
return new Integer(String.valueOf(number).substring(n-1,n));
答案 1 :(得分:0)
代码中的错误位于return语句中或使用它。
digit = number % 10;
如果你想要的是将字符串4 3 2 1写入输出流,那么你可能想要这样做
static String nthDigit(int number, int n)
{
String digit = 0;
for (int i = 0; i <= n; i++) { // Assumes n is >= 0
digit += (number % 10).ToString();
number /= 10;
}
return digit;
}
注意我更改了方法的返回类型,并更改了用于将数字从'='填充到'+ ='的运算符,以确保捕获所有值。
如果您想要返回值的总和,那么您可以更改代码
static int nthDigit(int number, int n)
{
int digit = 0;
for (int i = 0; i <= n; i++) { // Assumes n is >= 0
**digit += number % 10;**
number /= 10;
}
return digit;
}
我将int返回类型恢复为原来的状态,但我保留了之前所做的操作符更改。
答案 2 :(得分:0)
static int nthDigit(int number, int n)
{
n = String.valueOf(number).length() - n;
int digit = 0;
for (int i = 0; i <= n; i++) {
digit = number % 10;
number /= 10;
}
return digit;
}
public static void main(String args[]) {
System.out.println(nthDigit(2314, 1)); // 2
System.out.println(nthDigit(2314, 2)); // 3
System.out.println(nthDigit(2314, 3)); // 1
System.out.println(nthDigit(2314, 4)); // 4
}
我所做的不是以n作为n th 数字开头,而是从它的数字的另一侧开始。因此,我将使用1 st 数字而不是4 th 数字。要做到这一点,我从数字的长度中减去n
(这是它的补充,如果你曾经采用概率课程的话)。