如何提取一个整数中各个位的数字(Java)?(求水仙花数)
任意数字的指定位上的数值如何求?
目录
一、提取各个位数的方法?
先进行整除操作,将要求的数字移动到个位上,在使用取余操作,取出最后一位上的值。
二、方法解读
1.详细解释方法
方法中第一部分(将要求的数字移动到个位上)的意思是:用这个整数先整除将要提取的数字所在位的10^(n-1),
第二部分(在使用取余操作,取出最后一位上的值):将第一部分计算的结果对10取余,即可获得最后一位上的值。
既:
个位获取: XXX % 10;
十位获取: XXX /10 % 10;
百位获取: XXX / 100 % 10;
千位获取: XXXX / 1000 % 10;
.............
public class Demo08 {
public static void main(String[] args) {
int num = 789456; //操作数
int gewei = num % 10; //个位:从右往左数第1个数字,用操作数整除10^(1-1)在对10取余
int shiwei = num / 10 % 10; //十位:从右往左数第2个数字,用操作数整除10^(2-1)在对10取余
int baiwei = num / 100 % 10; //百位:从右往左数第3个数字,用操作数整除10^(3-1)在对10取余
int qianwei = num / 1000 % 10; //千位:从右往左数第4个数字,用操作数整除10^(4-1)在对10取余
int wanwei = num / 10000 % 10; //万位:从右往左数第5个数字,用操作数整除10^(5-1)在对10取余
int shiwanwei = num / 100000 % 10; //十万位:从右往左数第6个数字,用操作数整除10^(6-1)在对10取余
System.out.println("个位:" + gewei);
System.out.println("十位:" + shiwei);
System.out.println("百位:" + baiwei);
System.out.println("千位:" + qianwei);
System.out.println("万位:" + wanwei);
System.out.println("十万位:" + shiwanwei);
}
}
结果输出为:
个位:6
十位:5
百位:4
千位:9
万位:8
十万位:7
Process finished with exit code 0
2.举例子(水仙花数)
要求出所有的水仙花数。 水仙花数:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。 例如:1^3 + 5^3+ 3^3 = 153。
首先提取出一个三位数的个位、十位、百位,然后分别求三次幂在求和,在使用if判断是否等于它本身。
/**
* 求出所有的水仙花数(三位)
* 水仙花数:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。
*/
public class Demo08 {
public static void main(String[] args) {
for (int num = 100; num < 1000; num++) {
int i1 = num % 10; //个位
int i2 = num / 10 % 10; //十位
int i3 = num / 100 % 10; //百位
if (i1 * i1 * i1 + i2 * i2 * i2 + i3 * i3 * i3 == num) {
System.out.println(num + "为水仙花数");
}
}
}
}
输出的结果为:
153为水仙花数
370为水仙花数
371为水仙花数
407为水仙花数
Process finished with exit code 0
总结
想要提取一个整数的各个位的数字,也很简单,把上面的方法精简一下就是,想要提取哪一位就先整除那个位(从右往左数第一个)的10^(n-1),然后对10取余就是想要的结果。