Java水仙花

import java.util.Scanner;
public class WaterFlower{
	/*
	100~n的水仙花数
	1.用户输入n
	2.判断一个数是否时水仙花
	3.获取一个整数的位数次方的和
	4.求a的b次方
	5.求a的位数
	6.打印最小值到最大值之间的水仙花
	
	*/
	public static void main(String[] args){
		int max = getNumber(200);
		printFlower(100,max);
	}
	//用户输入
	public static int getNumber(int min){
		Scanner sc = new Scanner(System.in);
		while(true){
			System.out.println("请输入一个大于"+min+"的数");
			int number = sc.nextInt();
			if(number>=min){
				return number;
			}
		}
	}
	//求a的b次方
	public static int pow(int a,int b){
		int sum = 1;
		for(int i = 0;i < b;i++){
			sum *= a;
		}
		return sum;
	}
	//求a的位数
	public static int getBit(int a){
		int bit = 0;
		while(a>0){
			bit++;
			a /= 10;
		}
		return bit;
	}
	//获取一个整数位数次方的和
	public static int bitSum(int a){
		int bit = getBit(a);//获取整数的位数
		int sum = 0;
		while(a>0){
			sum += pow(a%10,bit);
			a /= 10;
		}
		return sum;
	}
	//判断一个数是否时水仙花
	public static boolean ifFlower(int a){
		return a==bitSum(a);
	}
	//打印min到max的水仙花数
	public static void printFlower(int min ,int max){
		for(int i = min;i <= max;i++){
			if(ifFlower(i)){
				System.out.println(i);
			}
		}
	}
}














 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值