Java50道经典编程题:(三)打印水仙花数 ——循环结构的使用

Java50道经典编程题:(三)打印水仙花数

——循环结构的使用

1.问题重述

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

2.解析

2.1如何提取出一个数的个位、十位、百位的数字?

如果i是一个三位数,则:

int bite = i % 10;//提取出个位数字
int ten = i/10 % 10;//提取出十位数字
int hundred = i/100;//提取出百位数字

2.2java中的三次幂如何表示?

使用Math.pow(底数,幂)表示。

3.解决问题

3.1解析思路

  • 使用for循环遍历判断。
  • 使用while或者do…while语句遍历判断。

3.2代码

3.2.1for循环

public class demo {
	public static void main(String[] args) {
		int sum = 0;//统计水仙花数的个数
		for(int i = 100 ;i <= 999;i++) {
			int bite = i % 10;//提取出个位数字
			int ten = i/10 % 10;//提取出十位数字
			int hundred = i/100;//提取出百位数字
			if(i == Math.pow(bite, 3) + Math.pow(ten, 3) + Math.pow(hundred, 3)) {//判断是否是水仙花数
				System.out.println(i);
				sum++;
			}else {
				
			}
		}
		System.out.println("一共有" + sum + "个水仙花数");
	}
}

3.2.2while语句

public class demo {
	public static void main(String[] args) {
		int sum1 = 0;//统计水仙花数的个数
		int n = 100;
		while(n <= 999) {
			int bite = n % 10;//提取出个位数字
			int ten = n/10 % 10;//提取出十位数字
			int hundred = n/100;//提取出百位数字
			if(n == Math.pow(bite, 3) + Math.pow(ten, 3) + Math.pow(hundred, 3)) {//判断是否是水仙花数
				System.out.println(n);
				sum++;
			}else {
				
			}
			n++;
		}
		System.out.println("一共有" + sum1 + "个水仙花数");
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_43812140/article/details/86551727