黑马程序员技术交流社区
标题:
题目3:打印水仙花数
[打印本页]
作者:
唱一些温暖
时间:
2015-12-28 15:40
标题:
题目3:打印水仙花数
本帖最后由 唱一些温暖 于 2015-12-28 15:44 编辑
package prog50;
import java.util.Scanner;
/*
* 题目:打印出100-999所有的"水仙花数".
* 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。
* 例如:153是一个"水仙花数",1^3 + 5^3+ 3^3 = 153
*/
public class Prog3 {
public static void main(String[] args){
//循环检查每一个3位数
for(int x=100;x<=999;x++){
//定义变量a存放数据,变量b记录每个三位数每个位上的数字的 n 次幂之和,变量c=x
int a=0,b=0,c=x;
//求出b的值,即当前数字x每个位上的数字的 n 次幂之和
for(int y=1;y<=3;y++){
a=c%10;
c=c/10;
b=(a*a*a)+b;
}
//比较是不是等于本身,等于就是水仙花数
if(b==x){
System.out.println("水仙花数:"+x);
}
}
}
}
//输入一个数,打印到这个数为止的所有水仙花数,例如输入9999999(7位数)
class Porg3_2{
public static void main(String[] args){
//导入扫描仪,
Scanner in=new Scanner(System.in);
System.out.println("请输入一个大于100的数字:");
//键盘输入数字
int z=in.nextInt();
//关闭扫描仪
in.close();
//从100循环到输入的数为止
for(int x=100;x<=z;x++){
//定义变量a存放数据,变量b记录每个三位数每个位上的数字的 n 次幂之和,变量c=x
int a=0,c=x;
double b=0;
//当前x转化成字符串获取长度,注意是当前的x
int d=Integer.toString(x).length();
//求出b的值,即当前数字x每个位上的数字的 n 次幂之和
for(int y=1;y<=d;y++){
a=c%10;
c=c/10;
//因为java中^运算是位运算,所以a^b次幂表达为Math.pow(a,d)
b=(Math.pow(a,d))+b;
}
//比较是不是等于本身,等于就是水仙花数
if(b==x){
System.out.println("水仙花数:"+x);
}
}
}
}
复制代码
作者:
愿随风丶飘雪
时间:
2015-12-28 22:36
原来水仙花数不止是三位数啊,我错了大神
作者:
txw126
时间:
2015-12-28 22:51
黑马加油!!
作者:
隔壁老猫
时间:
2015-12-28 23:06
来复习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2