求水仙花数
小弟编写一个求水仙花数的程序,但是就是求不出来
  希望各位都来帮忙看看哪里不对
package project1;
public class Class2 {
public static void main(String[] args) {
     int a,b,c,d;
     d=100;
     for(d=100;d<1000;d=d+1){
         a=d/100;
         b=(d-a*100)/10;
         c=d-a*100-b*10;
         if (d==a*a*a+b*b*b+c*c*c);
         System.out.println(d);
            }
}
}
------解决方案--------------------把
if (d==a*a*a+b*b*b+c*c*c);
那个分号去掉试试
------解决方案--------------------水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3 + 3^3 = 153)
public class 水仙花数 {
	public static void main(String[] args){
		int num=100;//水仙花数最少是三位数
		for(int i=99;i<num;i++,num++){
			if(i<999){
				//分解个十百位
				int bai=num/100;
				int shi=(num%100)/10;
				int ge=num%10;
				if(ge*ge*ge+shi*shi*shi+bai*bai*bai==num)
				System.out.println("该水仙花数是三位数:"+num);
			}
			if(i<9999){
				//分解个十百千位
				int qian=num/1000;
				int bai=(num%1000)/100;
				int shi=(num%100)/10;
				int ge=num%10;
				if(ge*ge*ge*ge+shi*shi*shi*shi+bai*bai*bai*bai+qian*qian*qian*qian==num)
				System.out.println("该水仙花数是四位数:"+num);
			}
			if(i<99999){
				//分解个十百千万位
				int wan=num/10000;
				int qian=(num%10000)/1000;
				int bai=(num%1000)/100;
				int shi=(num%100)/10;
				int ge=num%10;
				if(ge*ge*ge*ge*ge+shi*shi*shi*shi*shi+bai*bai*bai*bai*bai+qian*qian*qian*qian*qian+wan*wan*wan*wan*wan==num)
				System.out.println("该水仙花数是四位数:"+num);
			}
			if(i>=100000){
				System.out.println("十万之后的就不算了,和写法是和上面一样的,不过太耗电脑了哈,呵呵");
				break;
			}
		}
	}
}
------解决方案--------------------楼主啊,给你个建议哈,虽然你的if语句后面只有一条语句,但是那个"{}"我不建议你省略不写,要养成规范编码的好习惯,就像是上面的代码,你在if语句的后面用";"结尾了,结果if语句的判断在分号之前就结束了,所以你打印不出哈!
------解决方案--------------------public class ShuiXianHua {
   public static void main(String[] args) {
   	Long num = Long.parseLong(args[0]);
   	if(num <100 || num > Integer.MAX_VALUE){
   		System.out.println("only support [100," + Integer.MAX_VALUE + "]");
   		return;
   	}
		char[] nums = null;
		String s = "";
		for(int i = 100;i<=num;i++){
			s = i + "";
			nums = s.toCharArray();
			int sum = 0;
			for(int k = 0;k<nums.length;k++){
				sum += Math.pow(Integer.parseInt(nums[k]+""), nums.length);
			}
			if(sum == i){
				System.out.println("get one:"+sum);
			}
		}
	}
}
这个可以,你任意给个大于等于100小于int的最大值的正整数x,将得到所有的[100,x]的水仙花
------解决方案--------------------/**
	 * 根据传入的数字范围查询之间的水仙花数
	 * @param e
	 * @param f
	 */
	public static void printWater(int e,int f)
	{
		 int  b= 0;//获取百位数的变量
		 int c=0;
		 int d=0;
		 int i=0;//临时变量
		  System.out.println("你要找的水仙花数为: ");
		  for (int a = e; a <=f; a++) {
		  b = a / 100;  //百位
		  c = (a / 10) % 10;//十位
		  d = a % 100 % 10;//个位
		  if (a == b * b * b + c * c * c + d * d * d) {
		   System.out.println(a);
		   i++;
		  }
		 }
		  System.out.println("你找的水仙花个数为:" + i);				
	}
	这个是我以前面试的时候遇到的!
------解决方案--------------------Java code
/**
* 根据传入的数字范围查询之间的水仙花数
* @param e
* @param f
*/
public static void printWater(int e,int f)
{
int b= 0;//获取百位数的变量
int c=0;
int d=0;
int i=0;//临时变量
System.out.println("你要找的水仙花数为: ");
for (int a = e; a <=f; a++) {
b = a / 100; //百位
c = (a / 10) % 10;//十位
d = a % 100 % 10;//个位
if (a == b * b * b + c * c * c + d * d * d) {
System.out.println(a);
i++;
}
}
System.out.println("你找的水仙花个数为:" + i);
}