错误在:
isNarcissiticNumber这个方法的if (sum==x){ b=true;}这句
因为你在while循环中,已经将x的值改变,走到if判断的时候,x的值肯定是小于或者等于0的
所以sum==x不可能成立所以你一直return的是false
在你代码的基础上,建议在isNarcissiticNumber这个方法里,先将申明变量保存x的值,不要修改变量x的值- //判断是不是水仙花数
- public static boolean isNarcissiticNumber(int x)
- {
- boolean b;
- int temp =x;
- int w=weishu(x);
- int sum=0;
- while(temp>0)
- {
- int i=temp%10;
- sum=nCiFang(i,w)+sum;
- temp=temp/10;
- }
- //sop("sum="+sum);
- if (sum==x)
- {
- b=true;
- }
- else b=false;
- return b;
- }
复制代码
|