Java实现输出100到999之间所有水仙花数

水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它本身。例如:13+53+3^3=153。
需求:在控制台输出所有的“水仙花数”,水仙花数必须满足以下两个要求:
1.水仙花数是一个三位数。
2.水仙花数的个位、十位、百位的数字立方和等于原数。
实现该算法的总体思路为构造一个For循环,对100到999之间所有的三位整数进行遍历,同时在每一次循环中判断该数是否符合水仙花数的要求,符合则输出该数,不符合则不输出。
判断一个三位整数是否为水仙花数的方法为分别提取该数的个位、十位、百位存放进ge、shi、bai三个变量之中,再将三个变量的立方和存入变量sum中,最后利用一个If条件判断语句对其进行判断,判断条件为sum的值是否等于i,即该三位整数的个位、十位、百位的数字立方和是否等于原数。
其主要代码如下

package ljh.mask.shuixianhua;

public class ShuiXianHua {
    public static void main(String[] args) {
        //水仙花数。需求:在控制台输出所有的“水仙花数”,水仙花数满足以下两个要求
        //1.水仙花数是一个三位数
        //2.水仙花数的个位、十位、百位的数字立方和等于原数



        int ge,shi,bai;   //定义一个变量用来存放个位、十位、百位
        int sum;          //定义一个变量用来存放个位、十位、百位的立方和
        for (int i = 100;i <= 999;i++)
    {

        ge = i % 10;  //对输入的三位数进行对10取余,可以得到改三位数的个位,并将其存入变量ge
        shi = i / 10 % 10;  //对三位数先除以10,因为是整型数据所以会舍弃小数部分得到一个两位的整数,再对其对10取余可得到三位数的十位
        bai = i / 100;   //让该三位数除以100,即可得到该数的百位
        sum = (ge*ge*ge) + (shi*shi*shi) + (bai*bai*bai);
        if (sum == i) //判断个位、十位、百位的立方和是否等于原数
            System.out.println(i);
    }
        System.out.println("已输出所有水仙花数");
    }
}

同时对于水仙花数还做了一点小扩展。
需求变更为:输入一个三位整数,判断其是否为水仙花数,是则输出该三位整数为水仙花数;否则输出该三位整数不是水仙花数。
其主要代码如下:

package ljh.mask.shuixianhua;

import java.util.Scanner;

//需求:从键盘输入一个三位整数,判断其是否为一个水仙花数
public class ShuiXianHuaDemo2 {
    public static void main(String[] args) {
        System.out.println("请输入一个三位整数:");
        Scanner sc = new Scanner(System.in);
        int i = sc.nextInt();
        int ge,shi,bai,sum;
        ge = i % 10;  //对输入的三位数进行对10取余,可以得到改三位数的个位,并将其存入变量ge
        shi = i / 10 % 10;  //对三位数先除以10,因为是整型数据所以会舍弃小数部分得到一个两位的整数,再对其对10取余可得到三位数的十位
        bai = i / 100;   //让该三位数除以100,即可得到该数的百位
        sum = (ge*ge*ge) + (shi*shi*shi) + (bai*bai*bai);
        if (sum == i)        //加入一个If语句用于判断从键盘输入的数是否为一个水仙花数
            System.out.println("该三位整数为一个水仙花数");
        else
            System.out.println("该三位整数不是一个水仙花数");
        System.out.println("判断结束");
    }
}

以上就是关于水仙花数的全部内容 ,代码小白还请各位大佬批评指正。