小博在面试中碰到的这个问题,虽然写的比较简单,还是觉得有必要整理一下。当然,如果您有更好的写法,还望不吝赐教。
package com.web.demo.algorithm;
import java.util.Scanner;
/**
* 水仙花数算法(指一个三位数,其各位数字立方和等于该数本身)
*
* @author jiangyf
*/
public class NarcissusNumber {
@SuppressWarnings("resource")
public static void printNarcissusNumber() {
Scanner scan = new Scanner(System.in);// 接收控制台输入信息
System.out.print("请输入一个整数:");
try {
int num = scan.nextInt();// 取出控制台输入的信息
if (isNarcissusNumber(num)) {
System.out.println(num + "是水仙花数!");
} else {
System.out.println(num + "不是水仙花数!");
}
} catch (Exception e) {
System.out.println("必须输入整数");
}
}
public static boolean isNarcissusNumber(int num) {
int a = num / 100;
int b = num / 10 % 10;
int c = num % 10;
double sum = Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3);
// int sum = a * a * a + b * b * b + c * c * c;
if (sum == num) {
return true;
} else {
return false;
}
}
public static void main(String[] args) {
for (int i = 100; i < 1000; i++) {
if (isNarcissusNumber(i)) {
System.out.println(i);
}
}
}
}