在我的java程序中,我将一个数字存储在一个数组中。
p1Wins[0] = 123;
如何查看p1Wins[0]
的第一位数字?还是第二个或第三个?我只需要能够找到任何特定数字的值。
谢谢!
答案 0 :(得分:24)
Modular arithmetic可用于完成您想要的任务。例如,如果您将123
除以10
,并取余数,则会得到第一个数字3
。如果您按123
对100
进行整数除法,然后将结果除以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。