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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求大神优化

走你.....................

import java.util.Scanner;

class Flower
{
        public static void main(String[] args)
        {
                while (true)
                {
                        Scanner sc=new Scanner(System.in);
                        System.out.print("请输入数据:");
                        int max=sc.nextInt();

                        if (max<1)
                        {
                                System.out.println("你输入的数据不合法");
                        }else
                        {
                                int count = 0;
                                System.out.print("水仙花数有:");
                                for(int x=100;x<=max;x++)
                                {
                                        int sum=0;
                                        int y=x;
                                        int weishu=0;
                                        int z=x;

                                        //获取这个数的位数
                                        while (y!=0)
                                        {
                                                weishu++;
                                                y/=10;
                                        }
                                        //每个数位上的数取数位次幂后累加。
                                        while (z!=0)
                                        {
                                                int a=1;//定义一个变量用来存储每个数位上的数的位数次幂。
                                                for (int b=0;b<weishu ;b++ )
                                                {
                                                        a=a*(z%10);
                                                }
                                                sum=sum+a;
                                                z=z/10;
                                        }
                                        //用sum与原数进行比较。
                                        if (sum==x)
                                        {
                                                System.out.print(x+"  ");
                                                count++;
                                        }
                                }
                                System.out.println();
                                System.out.println("********************************");
                                System.out.println("1到"+max+"水仙花数一共有:"+count+"个");
                        }
                }
        }
}
       


5 个回复

倒序浏览
这个问题好,我也不知道,请哪位大神指教
回复 使用道具 举报 1 0
依然枫若 发表于 2015-6-21 11:33
这个问题好,我也不知道,请哪位大神指教

额,注释太少,能懂就好,谢谢
回复 使用道具 举报
额,注释太少,能懂就好,谢谢:handshake
回复 使用道具 举报
取个位 十位 百位代码太墨迹,代码阅读性太差。优化下取个、十、百位上的数字的代码。
int num=new Scanner(System.in).nextInt();
int arr[] =new int[3];//用来存储各个位上的数值;
int index=0;
while(num!=0){
arr[index++]=num%10;//取最后一位的数值;
num/=10; //去掉最后一位数;
}
while循环结束后;arr数组中存的就是这个数字上每位数的数值,注意存的是倒序的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马