题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
1 @SuppressWarnings({"rawtypes","unchecked"}) 2 public class _003ShuiXianFlower { 3 public static int b, s, g; 4 5 public boolean isDaffodilNumber(int i) { 6 boolean flag = false; 7 // 个位数 8 g = i % 10; 9 // 十位数 10 s = (i / 10) % 10; 11 // 百位数 12 b = i / 100; 13 14 if (i == ((g * g * g) + (s * s * s) + (b * b * b))) { 15 flag = true; 16 } 17 return flag; 18 } 19 20 public static void countFlower() { 21 int x = 0; 22 Vector v = new Vector(); 23 _003ShuiXianFlower db = new _003ShuiXianFlower(); 24 for (int i = 100; i < 1000; i++) { 25 if (db.isDaffodilNumber(i) == true) { 26 v.add(i); 27 x++; 28 } 29 } 30 System.out.println("100到1000之间有" + x + "个水仙花数"); 31 System.out.println("所有的水仙花数为:" + v); 32 } 33 34 public static void main(String[] args) { 35 countFlower(); 36 } 37 }