//水仙花数只是自幂数的一种,严格来说三位数的3次幂数才成为水仙花数。
public class Demo {
public static void main(String[] args) {
getNum(100);
}
private static void getNum(int n) {
if (n <= 999) {
String num = n + "";// 其他类型和字符串类型链接,转变成了字符串类型
String n1 = num.substring(0, 1);//百
String n2 = num.substring(1, 2);//十
String n3 = num.substring(2, 3);//个
//最后一个也可以写成num.subString(2);
//从字符串转换回数字
int x = Integer.parseInt(n1);
int y = Integer.parseInt(n2);
int z = Integer.parseInt(n3);
if (x * x * x + y * y * y + z * z * z == n) {
System.out.println(n);
}
n++;
getNum(n);//递归调用 ,避免使用for 或者while循环语句
}
}
}
代码运行
153
370
371
407
拓展,关于整数转字符串, 取得字符串的截取 , 字符串转整数的方法
import java.math.BigDecimal;
public class DemoTset {
public static void main(String[] args) {
int n = 153;
//整数转字符串的方法
String s1 = Integer.toString(n);//方法1
String s2 = n+"";//方法2 常用
String s3 = String.valueOf(n);//方法3
//取得每位的字符串
String n1 = s1.charAt(0)+""; //方法1 常用
String n2 = s2.substring(1,2);//方法2
String n3 = s3.substring(2);//方法3
//把字符串转整数的方法
int x = Integer.parseInt(n1);//方法1 常用
int y = Integer.valueOf(n2);//方法2
int z = new BigDecimal(n3).intValue();//方法3
System.out.println(x+"\t"+y+"\t"+z);
}
}
输出
1 5 3
String.valueOf()可将其他数据类型转为string型,水仙花数除了用循环做以外,还没有更合适的方法