我觉得要打印一个水仙花数,就要定义一个方法用来打印你传入的数内的所有水仙花数!而不是你确定了0到1000内的所有水仙花数,然后
/**个位:x%10
* 十位:x/10%10
百位:x/10/10%10
*/
这样只能解决你一时的要求,如果是打印 一亿以内的所有水仙花数, 是否每个位都要整除10呢?
下面我定义了一个自己的用于专门打印水仙花数的方法 ,能帮你更好的理解!
思想:得到一个数,只要将其每位上的数都拿出来,将每位数的立方加起来看是否是水仙花数
将一个数转换为字符串,截取字符串的每位数,转换成整数,算立方和
package wsc.itheima.com;
import java.util.ArrayList;
import java.util.Iterator;
public class MyTest3 {
public static void main(String[] args) {
PrintNarcissus(1000);
}
private static void PrintNarcissus(int num){ //打印水仙花数的方法
for(int x=0;x<=num;x++){ //遍历传入的数
ArrayList<Object> al=new ArrayList<Object>(); //定义集合 ,用于存如,截取的每位数的立方
int len=0;
String s = String.valueOf(x);//将整形转化为字符串 //装换为字符串
for(int y=0;y<s.length();y++){ //遍历字符串的位数
int n=Integer.parseInt(s.substring( y, y+1)); //转换为 整数
al.add(n*n*n); //算立方
}
Iterator<Object> it=al.iterator(); // 迭代
while(it.hasNext()){
len+=(Integer)it.next(); //将每位数的立方叠加赋给len
}
if(len==x){
System.out.println(x); //判读是否符合条件,符合则打印出来
}
}
}
}
|