在java中,如何用将数字转化成字符串的方法,尽量不用for循环求所有三位数中的水仙花数???要编

2024-12-31 13:43:48
推荐回答(2个)
回答1:

//水仙花数只是自幂数的一种,严格来说三位数的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

回答2:

String.valueOf()可将其他数据类型转为string型,水仙花数除了用循环做以外,还没有更合适的方法