用Java语言码一个输出范围水仙花数

import java.util.Scanner;

/**
 * 
 */

/**
 * @author Charles
 *
 */
public class WaterFlowerNumber {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO 
		Scanner scanner =new Scanner(System.in);		//new 控制台输入
		System.out.printf("请输入水仙花数的位数:   ");
		int nextInt=scanner.nextInt();					//nextInt  接收输入的数字
		int began=IntbeganNumberScope(nextInt);         //开始范围
		int end =IntendNumberScope(nextInt);            //结束范围
		
		for (int i=began;i<=end;i++) {
			if(IntWaterFlowerNumber(i))
				System.out.print(i+"\n");
		}
	}
	/**
	 * 根据输入值生产水仙花数的开始
	 * @param num
	 * main
	 * @return
	 * 开始
	 */
		public static int  IntbeganNumberScope(int num) {
			int began=0;
					
			began =(int) Math.pow(10, num-1);        //如果输入的是3位数,开始范围就是100
	
			return began;
		}
	/**
	 * 根据输入值生产水仙花数的结束
	 * @param num
	 * @return
	 * 结束
	 */
	public static int IntendNumberScope(int num) {
		int end=0;
		
		end = (int)Math.pow(10,num)-1;   			如果输入的是3位数,开始范围就是999
		
		return end;
	}
	/**
	 * 判断水仙花数的长度
	 * @param num
	 * IntWaterFlowerNumber
	 * @return
	 * 长度
	 */
	public static int printfLong(int num) {
		int length =0;     //水仙花数的长度
		
		while (num>0) {
			num=num/10;
			length++;
		}
		
		return length;
	}
	/**
	 * 判断输入的值是否为水仙花数
	 * @param num
	 * main
	 * @return
	 * true ore false
	 */
	public static boolean IntWaterFlowerNumber(int num) {
		int length=printfLong(num);		//水仙花数的长度
		int n=num;						//把num 值赋值给n ,让n代替num参与运算
		int number=0;						//累计num的余数相加
		
		while(n>0) {
			number +=(int)(Math.pow(n%10, length));     //如果传入的值是145,水仙花数的长度是3
			n/=10;										//5*3+4*3+1*3
		}
		
		if(number==num)
			return true;								//5*3+4*3+1*3==145返回true
		return false;      								//5*3+4*3+1*3!=145返回false
	}

}

输出
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值