A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马林康 中级黑马   /  2012-6-15 14:45  /  1766 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 马林康 于 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+"是水仙花数!");
  }
}
}

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

7 个回复

倒序浏览
int y=i%10/10;//取到十位

应该是:y=i/10%10  如:123/10=12, 12%10=2

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
  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是水仙花数!

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 郑冬 于 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+"是水仙花数!");
  }

   }  
}  
这样就可以了,楼主的取位有错误

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
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+"是水仙花数");
                }
               
        }
}

楼主十位和个位的数计算错误

评分

参与人数 1技术分 +1 收起 理由
黄奕豪 + 1 赞一个!

查看全部评分

回复 使用道具 举报
陌花╮有意、 发表于 2012-6-15 15:01
public class FlowerNumber {
        public static void main(String[] args) {
                for(int i=100;i

不好意思是十位计算错误
回复 使用道具 举报
int y=i%10/10;//取到十位
这个十位数取得不对吧,应该是 i/10%10
回复 使用道具 举报
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);
                }
               
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马