整数的最后第n位

时间:2013-04-24 04:54:48

标签: java

明天我正在参加期末考试,所以我正在练习一些问题。但是我坚持这个问题。

编写一个名为getNthDigit的方法,它返回一个整数的第n位。它也适用于负数。

例如

CALL                    VALUE RETURNED
getNthDigit(123,1)      3
getNthDigit(123,2)      2
getNthDigit(123,3)      1
getNthDigit(-123,1)     3

我的代码:

public static void getNthDigit(int x,int y){

x=Math.abs(x);
x%10;

}

我的思维过程是每次我将它模数为10,它给我最后一位数。但它仍然是错误的。如果我调用getNthDigit(123,2),我不再需要最后一位数值。

5 个答案:

答案 0 :(得分:7)

而不是字符串,你可以这样做:

(Math.abs(x) / Math.pow(10, y - 1)) % 10
  • abs(n)负责处理否定案件。
  • n / 10^(y - 1)n截断为第一个(从左侧开始)y个数字。
  • % 10获取该结果编号的最后一位数字。

答案 1 :(得分:4)

模块化算术可用于完成您想要的任务。例如,如果您将123除以10,并取余数,则会得到第一个数字3。如果您按123100进行整数除法,然后将结果除以10,则得到第二个数字2。更一般地,数字的第n个数字可以通过公式(number / base^(n-1)) % base:

获得
public int getNthDigit(int number, int base, int n) {    
  return (int) ((number / Math.pow(base, n - 1)) % base);
}

System.out.println(getNthDigit(123, 10, 1));  // 3
System.out.println(getNthDigit(123, 10, 2));  // 2
System.out.println(getNthDigit(123, 10, 3));  // 1

希望它有所帮助。

答案 2 :(得分:0)

为什么不简单地将数字转换为字符串然后将字符转到所需的位置?

public static void getNthDigit(int x,int y){
    String str = String.valueOf(x);
    if(str.charAt(0) == '-')
        y++;
    System.out.println(str.charAt(y-1));
}

答案 3 :(得分:0)

我将它写入一个字符串,剥离任何前导-ve然后只是索引到字符串(处理你希望基于Java的索引,其中Java使用0)。

答案 4 :(得分:0)

试试这个:

String s = String.valueOf(x);
int index = s.length()- y;
char result = s.charAt(index);