如何提取一个整数中各个位的数字(Java)?(求水仙花数)

任意数字的指定位上的数值如何求?

目录

一、提取各个位数的方法?

二、方法解读

1.详细解释方法

结果输出为:

2.举例子(水仙花数)

总结


一、提取各个位数的方法?

        先进行整除操作,将要求的数字移动到个位上,在使用取余操作,取出最后一位上的值。

二、方法解读

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取余就是想要的结果。