黑马程序员技术交流社区

标题: 这样做是不是太麻烦了,有没有简单点方法? [打印本页]

作者: ソi苆僞lè袮    时间: 2014-7-24 18:56
标题: 这样做是不是太麻烦了,有没有简单点方法?
package com.itheima;

import java.util.Scanner;

/**
* 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
*
* 键盘输入6,打印6秒;
*
* 键盘输入60,打印1分;
*
* 键盘输入66,打印1分6秒;
*
* 键盘输入666,打印11分6秒;
*
* 键盘输入3601,打印1小时1秒
*
* @author 14r
*
*/
public class Test3 {

        /**
         * @param args
         */
        public static void main(String[] args) {

                // 创建打印机接收用户的输入
                Scanner input = new Scanner(System.in);
                // 提示用户输入
                System.out.println("请输入一个整数:");
                int num = input.nextInt();

                // 调用转换成时间的方法并用String类型的变量time接收
                String time = convertToTime(num);
                // 输出time
                System.out.println(time);
        }

        /*
         * 将数字转换成时间的函数,返回一个字符串
         */
        public static String convertToTime(int num) {
                String time = null;
                // num小于60的时候,不需要换算
                if (num < 60) {
                        time = num + "秒";
                }
                // num大于等于60并且小于1小时的时候
                if (num >= 60 && num < 60 * 60) {
                        // 两种情况,整除的时候即秒为0,算出 分
                        if (num % 60 == 0) {
                                time = num / 60 + "分";
                        } else {// 否则需要算出 分+秒
                                time = num / 60 + "分" + num % 60 + "秒";
                        }
                }
                // 如果数字大于等于1小时并且小于一天则进入该if语句
                if (num >= 60 * 60 && num < 60 * 60 * 24) {
                        // 如果能够整除3600秒即一小时,那么直接换算成天即可
                        if (num % 3600 == 0) {
                                time = num / 3600 + "小时";
                        } else if (num % 3600 < 60) {// 如果不能整除3600秒,那么取余数看是否小于60,如果成立,换算成天+秒
                                time = num / 3600 + "小时" + num % 3600 + "秒";
                        } else if (num % 3600 >= 60) {// 如果不能整除3600秒,取余数大于等于60则进入
                                // 这里分2种情况
                                if ((num % 3600) % 60 == 0) {// 整除的话,后面就不需要带秒了
                                        time = num / 3600 + "小时" + (num % 3600) / 60 + "分";
                                } else {// 否则需要算出后面的秒数
                                        time = num / 3600 + "小时" + (num % 3600) / 60 + "分"
                                                        + (num % 3600) % 60 + "秒";
                                }

                        }
                }
                // 如果num大于3600*24即一天则进入此代码块
                if (num >= 3600 * 24) {
                        if (num % 86400 == 0) {// 整除1天(86400)的时候直接换算成天
                                time = num / 86400 + "天";
                        } else if (num % 86400 < 60) {// 不整除时看余数是否小于60,条件成立的话直接算 天+秒
                                time = num / 86400 + "天" + num % 86400 + "秒";
                        } else if (num % 86400 >= 60 && num % 86400 < 3600) {// num除以一天(86400)余数大于等于60小于一小时的时候的情况,算分和秒,不算小时
                                // 这里两种情况
                                if ((num % 86400) % 60 == 0) {// num除以一天的余数能够整除60的话,算出 天+分
                                        time = num / 86400 + "天" + num % 86400 / 60 + "分"; //
                                } else {// num除以一天的余数不能够整除60的话,算出 天+分+秒
                                        time = num / 86400 + "天" + num % 86400 / 60 + "分" + num
                                                        % 86400 % 60 + "秒";
                                }
                        } else if (num % 86400 >= 3600) {// num除以一天的余数大于等于1小时的情况
                                // 这里三种情况
                                if (num % 86400 % 3600 == 0) {// num除以一天的余数能够整除3600 ,则算出 天+小时
                                        time = num / 86400 + "天" + num % 86400 / 3600 + "小时";
                                } else if (num % 86400 % 3600 < 60) {// num除以一天的余数不能整除小时,余数小于60,算出
                                                                                                                // 天+小时+秒
                                        time = num / 86400 + "天" + num % 86400 / 3600 + "小时" + num
                                                        % 86400 % 3600 + "秒";
                                } else if (num % 86400 % 3600 >= 60) {// num除以一天的余数不能整除小时,余数大于60
                                        // 这里又分了2种情况
                                        if (num % 86400 % 3600 % 60 == 0) {// num除以一天的余数不能整除小时,余数能够整除60时,算出天+小时+分
                                                time = num / 86400 + "天" + num % 86400 / 3600 + "小时"
                                                                + num % 86400 % 360 / 60 + "分";
                                        } else {// num除以一天的余数不能整除小时,余数不能够整除60时 算出 天+小时+分+秒
                                                time = num / 86400 + "天" + num % 86400 / 3600 + "小时"
                                                                + num % 86400 % 3600 / 60 + "分" + num % 86400
                                                                % 3600 % 60 + "秒";
                                        }
                                }
                        }

                }
                return time;
        }




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