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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 294645832 中级黑马   /  2014-5-28 10:28  /  1991 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 294645832 于 2014-6-5 15:24 编辑

(循环)**求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足
                           a3+b3+c3=abc,则abc 是水仙花数。
  1. public class Test11 {
  2.         public static void main(String[] args) {
  3.                 /*
  4.                  * a = abc/300
  5.                  * b= abc%300/30
  6.                  * c=abc%300%30/3
  7.                  */
  8.                 int abc;
  9.                 for(abc=2;;abc++){
  10.                         int a = abc/100;
  11.                         int b= abc%100/10;
  12.                         int c=abc%100%10;
  13.                         if(a*3+b*3+c*3==abc){
  14.                                 System.out.println(abc);
  15.                                 System.out.println("a:"+a);
  16.                                 System.out.println("b:"+b);
  17.                                 System.out.println("c"+c);
  18.                         }
  19.                 }
  20.         }
  21. }
复制代码
这个是我做出来的   大家看下有没有什么问题。

这个是自带的答案的
  1. public class ShuiXian {
  2.         public static void main(String[] args) {
  3.                 //循环所有的三位数
  4.                 for(int i = 100; i<=999; i++){
  5.                         //分别获得三个位数上的值
  6.                         int a = i / 100;
  7.                         int b = i / 10 % 10;
  8.                         int c = i % 10;
  9.                         //计算各位数字的立方和
  10.                         int result = a*a*a + b*b*b + c*c*c;
  11.                         if (result == i){
  12.                                 System.out.println(i);
  13.                         }
  14.                 }
  15.         }
  16. }
复制代码
大家看一下  答案的思路对吗



评分

参与人数 1技术分 +1 收起 理由
李小然 + 1 鼓励新手朋友多来论坛学习!

查看全部评分

10 个回复

倒序浏览
路过……
回复 使用道具 举报
①Error:
没定义循环结束条件,死循环了
②瑕疵
int c = abc % 10;
System.out.println("c:"+c);
回复 使用道具 举报
不对
   你首先要搞清楚 水仙花数的定义是什么   根据百度百科的解释
水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = 153)这里^3表示3次方的意思  5^3就是5*5*5的意思而不是5*3
其次你应该明白循环的过程,遍历从100到999的所有整型数
回复 使用道具 举报
本帖最后由 yang1352546 于 2014-5-28 12:11 编辑

1  (a3+b3+c3=abc,则abc 是水仙花数)。可能由于格式问题 ,水仙花不是你想表达的那个意思,水仙花水是各位数字的立方和等于这个数,表示方法应该是a*a*a。
2这个题的定义的循环应该是从100-999的,
3第三个关键点就是从num取出各个位置上了数字int a = i / 100;这是百位的          int b = i / 10 % 10;十位的
       int c = i % 10;个位的     你的那个获取各个位置的数方法我感觉应该也是可以的。
回复 使用道具 举报
294645832 来自手机 中级黑马 2014-5-28 12:31:42
地板
附耳细说 发表于 2014-5-28 10:51
不对
   你首先要搞清楚 水仙花数的定义是什么   根据百度百科的解释
水仙花数是指一个 n 位数 ( n≥3 ), ...

理解了   谢谢   就说怎么会不一样
回复 使用道具 举报
294645832 来自手机 中级黑马 2014-5-28 12:32:57
7#
yang1352546 发表于 2014-5-28 12:09
1  (a3+b3+c3=abc,则abc 是水仙花数)。可能由于格式问题 ,水仙花不是你想表达的那个意思,水仙花水是各 ...

谢谢   已经明白了
回复 使用道具 举报
路过~~~~
回复 使用道具 举报
lin' 初级黑马 2014-5-29 08:58:06
9#
你的错误太大了,for循环条件简直、、、、、
回复 使用道具 举报
本帖最后由 raikecody 于 2014-5-29 09:20 编辑
  1. //分享一下我曾经自己写的,没有用完全数学的思想去做,就是通过对字符串的操作来的
复制代码
  1. public class Shuixianhua {
  2.         public static void main(String[] args) {
  3.                 for (int x=100; x<1000;x++)
  4.                 {
  5.                         char num1,num2,num3;
  6.                        
  7.                         int aa,bb,cc;                       
  8.                        
  9.                         Integer num = x;
  10.                         String str = num.toString();
  11.                         StringBuilder sb = new StringBuilder(str);
  12.                        
  13.                         num1 = sb.charAt(0);
  14.                         num2 = sb.charAt(1);
  15.                         num3 = sb.charAt(2);

  16.                         aa = Integer.parseInt(num1+"");
  17.                         bb = Integer.parseInt(num2+"");
  18.                         cc = Integer.parseInt(num3+"");
  19.                        
  20.                         if (x==aa*aa*aa+bb*bb*bb+cc*cc*cc)
  21.                                 System.out.println("水仙花:"+x);
  22.                         else
  23.                                 continue;
  24.                 }
  25.         }
  26. }
复制代码


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马