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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 聂益飞 高级黑马   /  2012-5-16 21:26  /  3328 人查看  /  26 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问题是这样的:输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如153是一水仙花数153=1的方+5的立方+3的立方。

我想用最简单的循环语句完成,可是怎么嵌套都不对!麻烦高手看看

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

26 个回复

倒序浏览
伪代码思路:先用 a b c分别赋值上这个数的  百位 十位 个位    然后在100到1000中循环  在用if判断一下就行    很简单的
回复 使用道具 举报
程旦 发表于 2012-5-16 21:31
伪代码思路:先用 a b c分别赋值上这个数的  百位 十位 个位    然后在100到1000中循环  在用if判断一下就 ...

就是伪代码思路!!问题是代码怎么写呀!我写来写去都不对!!
回复 使用道具 举报
public static void main(String[] args)
{
  for(int i=100;i<=999;i++)
  {
   int geWei,shiWei,baiWei;
   baiWei=i/100;
   shiWei=(i-baiWei*100)/10;
   geWei=i-baiWei*100-shiWei*10;
   if(i==geWei*geWei*geWei+shiWei*shiWei*shiWei+baiWei*baiWei*baiWei)
   {
    System.out.println(i);
   }
  }

}

利用for循环控制100-999个数,每个数分解出个位,十位,百位。例如:153是一水仙花数153=1的方+5的立方+3的立方

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
任睦强 发表于 2012-5-16 21:33
public static void main(String[] args)
{
  for(int i=100;i

哥~~谢了!!一直以来都是我思路想歪了!前面和你一样 三个数 分别代表十位百位千位!但是后面想叉了!
回复 使用道具 举报
本帖最后由 申振华 于 2012-5-16 21:44 编辑
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                         int a,b,c;
  4.                         for (int j = 100; j <1000; j++) {                                
  5.                                         a=j/100;  //百位数
  6.                                         b=j/10%10;  //十位数
  7.                                         c=j%100%10;  //个位
  8.                                 if(a*a*a+b*b*b+c*c*c==a*100+b*10+c){
  9.                                         System.out.println("水仙花数:"+(a*100+b*10+c));
  10.                                 }                                
  11.                         }
  12.         }
  13. }
复制代码
回复 使用道具 举报
public class FlowerNum {

        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
               
         for(int i=100;i<999;i++){
                 String str=i+"";
                  int x=Integer.parseInt(str.charAt(0)+"");
                  int y=Integer.parseInt(str.charAt(1)+"");
                  int z=Integer.parseInt(str.charAt(2)+"");
                  int count=x*x*x+y*y*y+z*z*z;
                  if(i==count){
                          System.out.println(i);
                  }
         }
        }

}
输出结果为:
153
370
371
407
回复 使用道具 举报
public int daffodilsNum(int num){
         int a = 0;
         int b = 0;
         int c = 0;
a = num/100;
b = (num-a*100)/10;
c = num%10;
if(num == a*a*a+b*b*b+c*c*c){
        return num;
   }else
   {return 0;}
}


public static void main(String args[]){

     for(int i = 100;i<10000;i++){
        int b = daffodilsNum(i);
        if(b){
          System.out.println("水仙花数:"+i);
       }
    }
}
回复 使用道具 举报
于陈 中级黑马 2012-5-16 21:49:04
9#
这个题目大一的时候学c++的时候还做过练习的
首先要解决的一个问题:就是取出这个三位数的每一位数字
这个解决了就一个for循环就搞定!
假设这个三位数是536
536除以100就得到百位数字 a=5
536对10求余,就得到c=6
最后拿(536-a*100-c)/10就得到b=3
  1. /**
  2. * 作者:于陈
  3. * 功能:求水仙花数
  4. * 时间:2012年5月16日 21:46:25
  5. */


  6. public class Shuzu

  7. {
  8.         public static void main(String[] args) {
  9.                 // for循环,从100到999之间的数都是三位数
  10.                 for (int i = 100; i <= 999; i++) {
  11.                         int a = 0, b = 0, c = 0; // 定义并初始化这个三位数的各位数
  12.                         a = i / 100;
  13.                         c = i % 10;
  14.                         b = (i - a * 100 - c) / 10;
  15.                         // 判断如果符合各位数的立方和等于这个数,那么就输出这个数
  16.                         if (a * a * a + b * b * b + c * c * c == i) {
  17.                                 System.out.println(i);
  18.                         }

  19.                 }
  20.         }
  21. }
复制代码
回复 使用道具 举报
数学学差了就是不行!谢谢各位!!好久没动脑子脑子都生锈了!
回复 使用道具 举报
于陈 发表于 2012-5-16 21:49
这个题目大一的时候学c++的时候还做过练习的
首先要解决的一个问题:就是取出这个三位数的每一位数字
这个 ...

我就是翻出大一的C书背后的练习来做的!以前做过!几年过去!全还老师了!
回复 使用道具 举报
刘克方 发表于 2012-5-16 21:45
public class FlowerNum {

        /**

哥~~String类我都忘光了......
回复 使用道具 举报
niexiaolu 发表于 2012-5-16 21:52
我就是翻出大一的C书背后的练习来做的!以前做过!几年过去!全还老师了! ...

哈哈~我前几天还去学校的在线程序设计广场刷题目来着~把以前用c++写的再用java写一遍~
回复 使用道具 举报
许涛 黑马帝 2012-5-16 21:56:56
14#
本帖最后由 许涛 于 2012-5-16 22:09 编辑

循环嵌套~
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 for(int x=0;x<10;x++)
  6.                 {
  7.                         for(int y=0;y<10;y++)
  8.                         {
  9.                                 for(int z=0;z<10;z++)
  10.                                 {
  11.                                         if((z+10*y+x*100==x*x*x+y*y*y+z*z*z)&&(z+10*y+x*100>100))
  12.                                                 System.out.println("x="+x+",y="+y+",z="+z);
  13.                                 }
  14.                         }
  15.                 }
  16.         }
  17. }
复制代码
回复 使用道具 举报
许涛 发表于 2012-5-16 21:56
循环嵌套~

高手!这道题都出了3种做法了!!
回复 使用道具 举报
许涛 发表于 2012-5-16 21:56
循环嵌套~

不过你这种做法结果输出是错的!!
回复 使用道具 举报
niexiaolu 发表于 2012-5-16 22:00
不过你这种做法结果输出是错的!!

不好意思!是我没注意看!结果没错!!正确的!!谢谢!!!
回复 使用道具 举报
许涛 发表于 2012-5-16 21:56
循环嵌套~

楼上的输出有点问题啊~
输出的是:
x=0,y=0,z=0
x=0,y=0,z=1
x=1,y=5,z=3
x=3,y=7,z=0
x=3,y=7,z=1
x=4,y=0,z=7
这个很明显还有点小问题
  1. public class Shuzu

  2. {
  3.         public static void main(String[] args) {
  4.                 for (int x = 0; x < 10; x++) {
  5.                         for (int y = 0; y < 10; y++) {
  6.                                 for (int z = 0; z < 10; z++) {
  7.                                         if ((z + 10 * y + x * 100 == x * x * x + y * y * y + z * z
  8.                                                         * z)
  9.                                                         && (x != 0))
  10.                                                 System.out.println(x + "" + y + "" + z);
  11.                                 }
  12.                         }
  13.                 }
  14.         }
  15. }
复制代码
这样输出就木有问题了~
回复 使用道具 举报
许涛 黑马帝 2012-5-16 22:06:52
19#
已修正。。。
回复 使用道具 举报
niexiaolu 发表于 2012-5-16 21:53
哥~~String类我都忘光了......

String类的方法很多,很灵活,用起来方便
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马