Java水仙花数

来源:互联网 发布:化工项目网络计划绘制 编辑:程序博客网 时间:2024/06/07 00:39

编写Java程序打印 “水仙花” 数 (它的个、十、百位数字的立方的和等于该数本身,如:153=1^3+5^3+3^3

public class NarcissusNum  {    static int place(int s) {        int i = 0;        for(; s!=0; i++) {            s/=10;        }        return i;    }    static void action(int s, int e) {        int c=0, n;        for(int i=s; i<=e; i++) {            int sum=0, t=i;            n = NarcissusNum.place(t);            for(; t!=0; ) {                sum += Math.pow(t%10, n);                t/=10;            }            if(i==sum) {                c++;                System.out.println(i);            }        }        if(0==c) {            System.out.println(s + "到" + e + "区间内没有水仙花数。");        }    }    static boolean judge(int s) {        int sum=0, n;        n = NarcissusNum.place(s);        for(int t = s; t!=0; ) {            sum += Math.pow(t%10, n);            t/=10;        }        if(s==sum)            return true;        else            return false;    }    public static void main(String[] args) {        // TODO Auto-generated method stub        Scanner in = new Scanner(System.in);        System.out.println("请输入起始数字");        int s = in.nextInt();        System.out.println("请输入末尾数字,若只判断一个数是否为水仙花数,请再次输入起始数字");        int e = in.nextInt();        if(s==e) {            if(NarcissusNum.judge(s))                System.out.println(s + "是水仙花数。");            else                System.out.println(s + "不是水仙花数。");        }        else            NarcissusNum.action(s, e);    }}