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 + "个水仙花数");
}
}