6
public class Return {    
    public static void main(String[] args) {        
        int answer = digit(9635, 1);
        print("The answer is " + answer);
    }

    static void print(String karen) {
        System.out.println (karen);
    }

    static int digit(int a, int b) {
        int digit = a;
        return digit;
    }     
}

创建一个程序,该程序使用一个名为digit的函数,该函数返回从整数参数右侧起第 n 个数字的值。n 的值应该是第二个参数。

例如:digit(9635, 1)退货5digit(9635, 3)退货6

4

4 回答 4

28

不用勺子喂你代码:

第 n 位是除以(a除以 10 b-1)除以 10 后的余数。

return a / (int)Math.pow(10, b - 1) % 10;

现场演示


如果您想要一种迭代方法:

循环 b-1 次,每次将除以10a的结果赋给变量。 循环后,第 n 位为除以10 的余数。a
a

while (--b > 0) {
a /= 10;
}
return a % 10;

现场演示

--

仅供参考,余数运算符是%,例如32 % 10返回 2,整数除法丢弃余数,因此例如32 / 10返回3

于 2013-10-05T05:23:18.753 回答
2
static int dig(int a, int b) {
    int i, digit=1;
    for(i=b-1; i>0; i++)
        digit = digit*10;
    digit = (a/digit) % 10;
    return digit;
 }
于 2013-10-05T05:43:04.993 回答
1

另一种方法是将数字转换为数组并返回第 n 个索引

static char digit(int a,int b)
    {
        String x=a+"";
        char x1[]=x.toCharArray();
        int length=x1.length;
        char result=x1[length-b];
        return result;
    }

现在像这样从你的主要方法运行

System.out.println("digit answer  "+digit(1254,3));

输出

digit answer  2
于 2013-10-05T05:26:43.593 回答
0

将数字转换为字符串,然后使用charAt () 方法。

class X{   
    static char digit(int a,int n)
    {
        String x=a+"";
        return x.charAt(n-1); 
    }

    public static void main(String[] args) {
        System.out.println(X.digit(123, 2));
    }
}

您可能需要仔细检查第 n 个位置是否在数字的长度内:

static char digit(int a, int n) {
    String x = a + "";
    char digit='\0' ;
    if (n > 0 && n <= x.length()) {
        digit = x.charAt(n - 1);
    }
    return digit;
}
于 2013-10-05T06:23:22.613 回答