从Java中的int获取数字的特定数字[重复]
Posted
技术标签:
【中文标题】从Java中的int获取数字的特定数字[重复]【英文标题】:Get a specific digit of a number from an int in Java [duplicate] 【发布时间】:2012-03-04 10:52:39 【问题描述】:可能重复:Return first digit of an integer
在我的 java 程序中,我将一个数字存储在一个数组中。
p1Wins[0] = 123;
如何检查p1Wins[0]
的第一位数字?还是第二个或第三个?我只需要能够找到任何特定数字的值。
谢谢!
【问题讨论】:
将其转换为字符串并使用charAt
?到目前为止,您尝试过什么?
出于好奇:这个的用例是什么?为什么你需要得到那个数字?可能有更好的方法来实现您的最终目标,因此您可能需要详细说明一下。
【参考方案1】:
Integer(plWins[0]).toString().charAt(0)
您正在将您的号码转换为字符串,然后执行 charAt。 0 也可以替换为任何其他字符。它不是太优雅,但我相信 Java 没有提供任何更直接的方法。如果 char 不是您的首选类型,您也可以选择将其转换为 int。
【讨论】:
【参考方案2】: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
【讨论】:
【参考方案3】:您将不得不做一些数学魔术来获得任意数字的第 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);
请注意,取模方法将取右侧,字符串取左侧;
【讨论】:
我认为你不想在那里使用异或 (^
)。
@GregHewgill - 哈哈,是的,对不起,我用伪代码制作了函数原型,然后突然不记得 Math.pow
函数,所以我不得不去查找它。【参考方案4】:
试过
String.valueOf(Math.abs((long)x)).charAt(0)
?
【讨论】:
以上是关于从Java中的int获取数字的特定数字[重复]的主要内容,如果未能解决你的问题,请参考以下文章
从任何基数的比率扩展中获取特定数字(x/y 的第 n 个数字)