从Java中的int获取数字的特定数字

时间:2012-02-12 23:27:08

标签: java arrays int

  

可能重复:
  Return first digit of an integer

在我的java程序中,我将一个数字存储在一个数组中。

p1Wins[0] = 123;

如何查看p1Wins[0]的第一位数字?还是第二个或第三个?我只需要能够找到任何特定数字的值。

谢谢!

4 个答案:

答案 0 :(得分:24)

Modular arithmetic可用于完成您想要的任务。例如,如果您将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

答案 1 :(得分:0)

尝试

String.valueOf(Math.abs((long)x)).charAt(0)

答案 2 :(得分:0)

你必须做一些数学魔法才能获得任意数字的第n位数,基本上使用除法和模数10,如果你想要它是一个数字。否则字符串操作将起作用。

int nth ( int number, int index ) {
    return ((int)number / java.lang.Math.pow(10, index)) % 10;
}

char nth ( int number, int index ) {
    return String.valueOf(java.lang.Math.abs(number)).charAt(index);
}

请注意,modulo方法将从右侧开始,字符串将从左侧开始;

答案 3 :(得分:0)

Integer(plWins[0]).toString().charAt(0)

您将数字转换为字符串,然后执行charAt。 0也可以替换为任何其他字符。它不是太优雅,但我相信Java不提供任何更直接的方法。如果char不是您的首选类型,您也可以选择将其强制转换为int。