题目来源:用数组写水仙花数——每日一练第3天(Java语言)
题目详情
定义一个整型数组 a[7],在控制台输入任意的 7 个整数给数组赋值,输出数组中所有的
水仙花数
。水仙花数
是指一个三位数其各位数字的立方和等于该数本身。
解题思路
想要判断一个三位数是不是水仙花数,主要看每位数字的立方和能否等于这个三位数本身,那么问题的重点就在于:如何把一个三位数拆分为个位,十位,百位。目前想到的两种思路:
- 通过计算的方式:
假设一个三位数为123
个位 = 123 % 10 = 3
十位 = 123 / 10 % 10 = 2
百位 = 123 / 100 = 1
- 通过整数到字符串,字符到整数的转换:
同样,假定三位数为123
将123转换为字符串“123”,再将字符串的每一位字符转换为整数
具体见下面代码
代码实现
import java.util.Scanner;
public class NarcissisticNumber {
public static boolean isNarcissisticNumber(int num, int fangfa) {
int a = 0;
int b = 0;
int c = 0;
if(fangfa == 1) { // 通过计算
a = num / 100;
b = num / 10 % 10;
c = num % 10;
} else if(fangfa == 2) { // 通过转换
String str = String.valueOf(num);
a = str.charAt(0) - '0';
b = str.charAt(1) - '0';
c = str.charAt(2) - '0';
}
if(a*a*a + b*b*b + c*c*c == num) {
return true;
}
return false;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入7个三位数:");
for(int i = 0; i < 7; i++) {
int num = sc.nextInt();
if(isNarcissisticNumber(num,2)) { // 1为方法一,2为方法二
System.out.println(num);
}
}
}
}