Java 如何捕获该程序返回的所有值? 公共类测试{ 静态整数n位数(整数编号,整数n) { 整数位数=0; 对于(int i=0;i=0 数字=数字%10; 数目/=10; } 返回数字; } 公共静态void main(字符串参数[]){ 系统输出打印项次(第n位数(2314,4)); } }

Java 如何捕获该程序返回的所有值? 公共类测试{ 静态整数n位数(整数编号,整数n) { 整数位数=0; 对于(int i=0;i=0 数字=数字%10; 数目/=10; } 返回数字; } 公共静态void main(字符串参数[]){ 系统输出打印项次(第n位数(2314,4)); } },java,Java,现在这个程序的输出是0 当我执行单元测试时,它首先返回4,然后分别返回1,3,2 我不知道我在哪里犯了这个错误,还有其他方法可以得到输出4,1,3,2吗 分别……代码中的错误出现在return语句中/或您对它的使用中 public class Test { static int nthDigit(int number, int n) { int digit = 0; for (int i = 0; i <= n; i++) { // Ass

现在这个程序的输出是0

当我执行单元测试时,它首先返回4,然后分别返回1,3,2

我不知道我在哪里犯了这个错误,还有其他方法可以得到输出4,1,3,2吗
分别……

代码中的错误出现在return语句中/或您对它的使用中

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));
    }
}
如果您希望将字符串4 3 2 1写入输出流,那么您可能希望这样做

digit = number % 10;
静态字符串n位(整数编号,整数n)
{
字符串数字=0;
对于(int i=0;i=0
数字+=(数字%10).ToString();
数目/=10;
}
返回数字;
}
注意,我更改了方法的返回类型,并将用于填充数字的运算符从“=”更改为“+=”,以确保捕获所有值

如果您希望返回值的总和,那么您可以这样更改代码

 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;
    }
静态整数n位数(整数,整数n)
{
整数位数=0;
对于(int i=0;i=0
**数字+=数字%10**
数目/=10;
}
返回数字;
}
我将int返回类型还原为原来的类型,但保留了先前对运算符所做的更改。

static int nthDigit(int number,int n)
 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;
    }
{ n=String.valueOf(number).length()-n; 整数位数=0; 对于(int i=0;i您还可以执行以下操作:

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
}

您想要字符串输出吗?获取前4位数字?我不理解这个问题。很好,但您应该执行
n-1,n
,因为字符串索引从0开始。例如,如果
n
为4,将引发异常。
return new Integer(String.valueOf(number).substring(n-1,n));