黑马程序员技术交流社区

标题: 关于前几天我写的一个小程序发现有Bug,在此做一下优化 [打印本页]

作者: 和鹏    时间: 2015-4-9 10:26
标题: 关于前几天我写的一个小程序发现有Bug,在此做一下优化
/*
3、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
键盘输入6,打印6秒;
键盘输入60,打印1分;
键盘输入66,打印1分6秒;
键盘输入666,打印11分6秒;
键盘输入3601,打印1小时1秒
*/

/*
程序的基本设计思路:
        对用户的输入,都从最大单位天开始做逐层向下的判断,所谓的逐层向下及从天向秒开始判断。
        当最终判断到秒时,也就意味着用户输入的这个数已经被转化成了时间。
*/


import java.util.*;
class Test_3
{
        public static void main(String[] args)
        {
                zhuanhuantime();
        }

        /**
        *该方法用于接收用户从输入设备输入的数字
        */
        public static int getNumber()
        {
                Scanner input=new Scanner(System.in);
        System.out.println("请输入一个正整数");
        int num=input.nextInt();
                return num;
        }

        /**
        *该方法用于将用户输入的数字视作秒数,转换成相对应的时间。(最大单位到天)
        */
        public static void zhuanhuantime()
        {       

                int num = getNumber();
                /**
                *分别定义了tian(天)、shi(小时)、fen(分钟)、miao(秒),4个变量。
                */
                int tian,shi,fen,miao;
                boolean falg = true; // 这个变量用于结束循环
                while(falg)
                {
                        /**
                        *用于判断用户输入的数字是否是正整数。
                        */
                        if(num<0)
                        {
                                System.out.println("输入的数据错误,请重新输入!");
                                int tempnum = getNumber(); // tempnum 这个临时变量用于在此接收用户的输入,然后将tempnum赋值给num,再进行判断。
                                num = tempnum;
                        }
                        /**
                        *将用户输入的数字转化到秒
                        */
                        if ((num>=0)&&(num<60))
                        {
                                System.out.print(num+"秒");
                                falg = false;   // 当用户输入的数字被解析到秒时,跳出循环
                        }
                        /**
                        *将用户输入的数字转化到分钟
                        */
                        if((num>=60)&&(num<3600))  
                        {
                                fen = num/60;
                                miao = num%60;
                                num = miao;
                                System.out.print(fen+"分钟");
                        }
                        /**
                        *将用户输入的数字转化到小时
                        */
                        if((num>=3600)&&(num<86400))
                        {       
                                int temp;
                                shi = num/3600;
                                fen = num%60;
                                temp = num%3600;
                                num = temp;
                                System.out.print(shi+"小时");
                        }
                        /**
                        *将用户输入的数字转化到天
                        */
                        if(num>=86400)
                        {
                                int temp;
                                tian = num/86400;
                                temp = num%86400;
                                num =temp;
                                System.out.print(tian+"天");
                        }
                }
        }
}

作者: 和鹏    时间: 2015-4-9 10:27
这次我记得写注释了
作者: 百思不得解    时间: 2015-4-9 16:54
不错学习了,分析思路明白了,也就看懂了。




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