黑马程序员技术交流社区

标题: 【新人】关于打印水仙花数的问题请教大家 [打印本页]

作者: reyzarc    时间: 2014-12-18 22:45
标题: 【新人】关于打印水仙花数的问题请教大家
额,今天有个题是打印水仙花数,视频中获取一个三位数的各个位上的数字的方法是除求模,例如abc,则a=abc/10/10%10;b=abc/10%10;c=abc%10;我自己写的时候是用的a=i/100;b=(i-100*a)/10;c=i-100*a-10*b;请问这两种方法哪种更好一点,效率呢?还有平时自己在写代码的时候怎么知道自己的代码是不是最优,如何优化。谢谢

作者: 7788665544    时间: 2014-12-18 22:51
感觉视频中的好一点,理解起来比较容易。而且个十百位表示起来有一定的规律。
作者: 古月哥欠    时间: 2014-12-19 00:28
个人认为使用%运算更好,也更简便,不过如果你定义的三位数是abc那就使用for循环就可以了,a,b,c的值都是1-9
作者: quick3g    时间: 2014-12-19 00:37
//还有一种方法
  1.         public void print(){
  2.                 for (int i =1; i <=9; i++) {
  3.                         for (int j = 0; j <10; j++) {
  4.                                 for (int j2 = 0; j2 <10; j2++) {
  5.                                         int temp=i*100+j*10+j2;
  6.                                         if(temp==i*i*i+j*j*j+j2*j2*j2){
  7.                                                 System.out.println(temp);
  8.                                         }
  9.                                 }
  10.                         }
  11.                 }
  12.         }
复制代码

作者: hello_csu    时间: 2014-12-19 22:00
程序的设计原则:代码简洁且容易理解,所以abc,则a=abc/10/10%10;b=abc/10%10;c=abc%10更佳。
作者: 只会金克斯    时间: 2014-12-19 22:41
新人路过。。。。。。
作者: 18334705181    时间: 2014-12-19 22:53
看我的这个代码,希望能给你带来灵感
  1. class ClassDemo6
  2. {
  3.         public static void main(String[] args)
  4.         {        int z=0;
  5. bastard:for ( int  a=10000;a<=9999999;a++)
  6.                         {
  7.                                 if((a%10==a/10000)&(a/10%10==a/1000%10)&(a/100%10==a%10+a/10%10+a/1000%10+a/10000))
  8.                         {
  9.                                 System.out.println(a);
  10.                                 z++;
  11.                                 if (z==5)
  12.                                 {
  13.                                         break bastard;
  14.                                 }
  15.                         }
  16.                                
  17.                 }
  18.         }
  19. }
复制代码

作者: dwy_hm    时间: 2014-12-19 22:55
a=abc/10/10%10;b=abc/10%10;c=abc%10 简洁点
作者: qowoeo7538    时间: 2014-12-19 22:56
写一个截取的方法,然后用直接调用这个方法就可以了,至于优化,得看经验了,如果你都不知道最优化的方法,你怎么验证?
作者: edidada    时间: 2014-12-19 22:57
hello_csu 发表于 2014-12-19 22:00
程序的设计原则:代码简洁且容易理解,所以abc,则a=abc/10/10%10;b=abc/10%10;c=abc%10更佳。 ...

我感觉还有一个要素,那就是程序执行的效率
作者: Alexrl    时间: 2014-12-19 23:17
学的越多,你就知道怎么优化了。
作者: 黑马-李权88    时间: 2014-12-19 23:32
当然第一种啦
作者: I空空    时间: 2014-12-21 13:14
简单的代码才是最好的




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