从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 个数字)

java怎么让数组的数字从大到小排序?

java:输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

JAVA怎么实现从指定范围随机取不重复的6个数字

如何从选择查询中的数字中获取文本[重复]

如何从python中的列表中获取最后一个数字[重复]