黑马程序员技术交流社区

标题: 来指点一下新手啊 [打印本页]

作者: 湛添友    时间: 2014-4-14 14:43
标题: 来指点一下新手啊
需求键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:

键盘输入6,打印6秒;
键盘输入60,打印1分;
键盘输入66,打印1分6秒;
键盘输入666,打印11分6秒;
键盘输入3601,打印1小时1秒

*   思路:             最大单位到天 则可以根据一天 一小时 一分钟的秒速来分类讨论
*                    一天有 24*60*60秒;
*                    一小时有 3600秒  
*                    一分60秒          可以一次来作为判断条件
*                    若数 x 超过了 24*60*60   那么这个数的天数是 x/24*60*60  
*                    小时数是 x%24*60*60得到剩余的不足一天的秒数 再将秒数   除3600 得到 小时数
*                    分钟数 是 将x%24*60*60 再%3600剩余不足一小时的秒数 除60 得到分钟数
*                    秒数 是将  x%60  即可得到秒数
*                    
*                     
*
*
*
*/
public class Test4
{
        public static void main(String args[])
        {
                int x=(3600*24)+1;//定义一个整数
                printTime(x);//调用打印时间功能
               
        }
       
        public static void printTime(int time)
        {
                if(time<60)//小于60时  直接打印秒
                {
                        System.out.println(time+"秒");
                }
                if(time<3600&time%60==0)//所以要分开讨论
                {
                        int m=time/60;
                        System.out.println(m+"分");
                }
                if(time>60&time<3600&time%60!=0)//两边都需要判断 所以用&
                {
                        int m=time/60;
                        int s=time%60;
                        System.out.println(m+"分"+s+"秒");
                }
                if(time%3600==0&time<(3600*24))
                {
                        int h=time/3600;
                        System.out.println(h+"小时");
                }
                if(time>3600&time<(3600*24)&time%3600!=0)
                {
                        int h=time/3600;
                        int m=(time%3600)/60;
                        int s=time%60;
                        System.out.println(h+"小时"+m+"分"+s+"秒");
                }
                if(time%3600*24==0&time>3600*24)
                {
                        int d=time/3600*24;
                        System.out.println(d+"天");
                }
                if(time>3600*24)
                {
                        int d=time/(3600*24);
                        int h=time%(3600*24)/(3600);
                        int m=time%(3600*24)%3600/60;
                        int s=time%60;
                        System.out.println(d+"天"+h+"小时"+m+"分"+s+"秒");
                }
        }
}

//还有几个特殊的时间点没实现   我这代码是不是写的很没有冗余啊?
作者: yanzhendong    时间: 2014-4-14 16:06
本帖最后由 yanzhendong 于 2014-4-14 16:10 编辑
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;

  3. public class Time {

  4.         public static void main(String[] args) throws Exception {
  5.                 int time;
  6.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  7.                 while (true) {
  8.                         System.out.println("请输入一个整数我将把它格式化:");
  9.                         time = Integer.parseInt(br.readLine());
  10.                         System.out.println(timeFomat(time));
  11.                        
  12.                 }
  13.         }

  14.         static String timeFomat(int time) {
  15.                 int day, hour, minute, second, temp = time;
  16.                 second = temp % 60;
  17.                 temp = temp / 60;
  18.                 minute = temp % 60;
  19.                 temp = temp / 60;
  20.                 hour = temp % 24;
  21.                 day = temp / 24;
  22.                 return (day == 0 ? "" : day + "天")
  23.                                 +(hour == 0 ? "" : hour + "小时")
  24.                                 +(minute == 0 ? "" : minute + "分钟")
  25.                                 +(second == 0 ? "" : second + "秒");
  26.         }
  27. }
复制代码
给你优化后的代码





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