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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王际涛 中级黑马   /  2015-11-4 23:28  /  2646 人查看  /  27 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

数越大水仙花数出现的越少
import java.util.Scanner;
class shuixianhua2 {
        public static void main(String[] args) {
                Scanner in=new Scanner(System.in);
                while(true){
                        sop("输入水仙花数值上限:(如:1000或10000或更大的数)");
                        long asd=in.nextInt();
                        sop("从100到"+asd+"之间的水仙花数是:");
                        shuixianhua(asd);
                }       
        }       
        public static void shuixianhua(long a){//循环判断水仙花数
                int count=0;
                for (long i=100;i<a ;i++ ) {
                        if (fenhe(i)==i) {
                                sop(i);
                                count++;
                        }
                }
                sop("总个数是"+count);
        }
        public static long fenhe(long a){//n个数字中每个数字n次幂的和
                long sum=0;
                int geshu1 = geshu(a);
                int[] asd=new int[geshu1];
                int q=0;
                while(a>0){
                        asd[q]=(int)(a%10);
                        a/=10;
                        q++;
                }
                for(int j=0;j<geshu1;j++){
                        sum+=mi(asd[j],geshu1);
                }
                return sum;
        }

        public static int geshu(long a){//输入数字的个数
                        int count1=0;
                        long a1=a;
               
                        while (a1>0) {
                                a1/=10;
                                count1++;
                        }
                        return count1;
        }
        public static int mi(int a,int b){  //
                int mii=1;
                for (int i=0; i<b;i++ ) {
                        mii*=a;
                }
                return mii;
        }
       
         public static void sop(Object a){
                System.out.println(a);
        }
}

27 个回复

正序浏览
呵呵 楼主你是在这里做作业吗
回复 使用道具 举报
眼花缭乱~~~~~~~~~~~~~~~~~~~~楼主写注释.
回复 使用道具 举报
MRguo 中级黑马 2015-12-1 22:46:45
26#
哥,你注释呢?
回复 使用道具 举报
希望可以写的简单一点
回复 使用道具 举报
代码可以再精简点
回复 使用道具 举报
sun4w 中级黑马 2015-12-1 14:17:58
23#
  论注释的重要性!
回复 使用道具 举报
水仙花数貌似用不了这么多代码吧
回复 使用道具 举报
anuo 中级黑马 2015-12-1 10:04:55
21#
zyh1578814923 发表于 2015-11-5 20:31
水仙花数是三位数啊

???水仙花数一定要是三位数啊?只是那个题目说的是三位数吧
回复 使用道具 举报
简化 简化 !!!!!!!!!!!!!!!!1
回复 使用道具 举报
anuo 中级黑马 2015-11-26 09:45:59
19#
写作习惯希望可以改改哦,别人看的真心累
回复 使用道具 举报
Camwly 中级黑马 2015-11-24 23:58:16
18#
好东西啊
回复 使用道具 举报
zyh1578814923 发表于 2015-11-5 20:31
水仙花数是三位数啊

三位数的数字三次方和,四位数的数字四次方和,五位数的数字五次方和……然后,就这样了,纯属逗自己玩
回复 使用道具 举报
478883662 发表于 2015-11-5 18:45
scanner 这个对象不是很熟,我想问楼主这个运行后是不是你输入一个数字然后按一下回车就ok了?
这个in.next ...

输入一个数字然后按一下回车就ok了
回复 使用道具 举报
水仙花数不应该是三位数么 ?
回复 使用道具 举报
水仙花数是三位数啊
回复 使用道具 举报
scanner 这个对象不是很熟,我想问楼主这个运行后是不是你输入一个数字然后按一下回车就ok了?
这个in.nextInt()相当于那种等待式的方法么,就一直在那等着用户去输入值。
是么?
回复 使用道具 举报
  1.                 int a,b,c,sum ;
  2.                 StringBuilder sb = new StringBuilder();
  3.                 for (int i =100;i<1000;i++){
  4.                         sb.append(i);
  5.                         a = sb.charAt(0)-48;
  6.                         b = sb.charAt(1)-48;
  7.                         c = sb.charAt(2)-48;
  8.                         sum = a*a*a+b*b*b+c*c*c;
  9.                         if(sum == i){
  10.                                 System.out.println(i);
  11.                         }
  12.                         sb.delete(0,sb.length());

  13.                 }
复制代码
回复 使用道具 举报
这代码看得 。。。。
回复 使用道具 举报
看得眼晕
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马