如何捕获此程序返回的所有值?

时间:2014-03-08 19:22:59

标签: java

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 分别....

3 个答案:

答案 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(这是它的补充,如果你曾经采用概率课程的话)。