黑马程序员技术交流社区

标题: 水仙花数问题 [打印本页]

作者: 马林康    时间: 2012-6-15 14:45
标题: 水仙花数问题
本帖最后由 马林康 于 2012-6-15 15:06 编辑

打印水仙花数为什么运行结果只有407一个结果,代码错在哪里?
public class NarcissisticNumber {
public static void main(String[] args){
  for(int i=100;i<=999;i++){
   int x=i/100;//取到百位
   int y=i%10/10;//取到十位
   int z=i%10;//取到个位
   if(i==x*x*x+y*y*y+z*z*z)
    System.out.println(i+"是水仙花数!");
  }
}
}

作者: 火焱    时间: 2012-6-15 14:52
int y=i%10/10;//取到十位

应该是:y=i/10%10  如:123/10=12, 12%10=2
作者: 宋浩    时间: 2012-6-15 14:54
  1. package Test;

  2. public class NarcissisticNumber {
  3. public static void main(String[] args){
  4. for(int i=100;i<=999;i++){
  5. int x=i/100;//取到百位
  6. int y=i/10%10;//取到十位
  7. int z=i%10;//取到个位
  8. if(i==x*x*x+y*y*y+z*z*z)
  9. System.out.println(i+"是水仙花数!");
  10. }
  11. }
  12. }
复制代码
楼主,你去十位和各位的方法好像不正确吧?上面是修改之后的代码,打印结果如下:
153是水仙花数!
370是水仙花数!
371是水仙花数!
407是水仙花数!

作者: 郑冬    时间: 2012-6-15 14:54
本帖最后由 郑冬 于 2012-6-15 14:58 编辑

public class NarcissisticNumber
{  
  public static void main(String args[])  
  {  
int x=0,y=0,z=0;
  for(int i=100;i <1000;i++)  
  {
   x=i/100;  
  y=(i/10)%10;  
  z=i%10;  
  if (x*x*x+y*y*y+z*z*z==i)  
  System.out.println(i+"是水仙花数!");
  }

   }  
}  
这样就可以了,楼主的取位有错误
作者: 陌花╮有意、    时间: 2012-6-15 15:01
public class FlowerNumber {
        public static void main(String[] args) {
                for(int i=100;i<999;i++) {
                        int x = i/100;  //取百位
                        int y= i%100/10; //取十位
                        int z=i%100%10;  //取个位
                       
                        if(i==x*x*x+y*y*y+z*z*z)
                                System.out.println(i+"是水仙花数");
                }
               
        }
}

楼主十位和个位的数计算错误
作者: 陌花╮有意、    时间: 2012-6-15 15:02
陌花╮有意、 发表于 2012-6-15 15:01
public class FlowerNumber {
        public static void main(String[] args) {
                for(int i=100;i

不好意思是十位计算错误
作者: ☆丿灬北纬28°    时间: 2012-6-15 15:05
int y=i%10/10;//取到十位
这个十位数取得不对吧,应该是 i/10%10
作者: 胡大强    时间: 2012-6-15 21:15
public class FlowerNumber {
        public static void main(String[] args) {
                for(int i=100;i<999;i++) {
                        int x = i/100;  //取百位
                        int y= i%100/10; //取十位             //显然你取十位i%10/10不对。。。
                        int z=i%100%10;  //取个位            //个位i%10也不对。。。
                        
                        if(i==x*x*x+y*y*y+z*z*z)
                                System.out.println(i);
                }
               
        }
}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2