黑马程序员技术交流社区

标题: 求帮助 [打印本页]

作者: 人心如水    时间: 2014-6-14 11:58
标题: 求帮助
/*
* 3、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
* 键盘输入6,打印6秒;
* 键盘输入60,打印1分;
* 键盘输入66,打印1分6秒;
* 键盘输入666,打印11分6秒;
* 键盘输入3601,打印1小时1秒
*/
作者: 倪大大    时间: 2014-6-14 12:48
        public static void main(String[] args)
        {
                Scanner sc = new Scanner(System.in);
                int a = sc.nextInt();
                System.out.println(show(a));
        }
        public static String show(int a)
        {
                String str;
                int x , y , z;
                y=a/60;
                z=a%60;
                x=y/60;
                if(x==0)
                {
                        if(z!=0 & y!=0)
                                return str=y+"分"+z+"秒";
                        if(z==0 & y!=0)
                                return str=y+"分";
                        if(z!=0 & y==0)
                                return str=z+"秒";
                }
                else
                {
                        y=y%60;
                        if(z!=0 & y!=0)
                                return str=x+"时"+y+"分"+z+"秒";
                        if(z==0 & y!=0)
                                return str=x+"时"+y+"分";
                        if(z!=0 & y==0)
                                return str=x+"时"+z+"秒";
                }
                return "请输入大于0的整数";
作者: 倪大大    时间: 2014-6-14 12:49
这是我考试得时候自己写的,又更简便的写法请各位大大贴出来 学习下,我总感觉我这写法太麻烦
作者: 黎志勇    时间: 2014-6-14 13:43
本帖最后由 黎志勇 于 2014-6-14 13:53 编辑
  1. import java.util.Scanner;

  2. public class Test {
  3.         public static void main(String args[]) {

  4.                 String secondString, minuteString, hourString, dayString;
  5.                 int totalSecond, totalMinute, totalHour;
  6.                 int second, minute, hour, day;
  7.                 // 输入时间
  8.                 Scanner scanner = new Scanner(System.in);
  9.                 System.out.println("请输入时间(非负整数):");
  10.                 totalSecond = scanner.nextInt();
  11.                 if (totalSecond == 0) {
  12.                         System.out.println("0秒");
  13.                         return;
  14.                 }
  15.                 // 格式化时间
  16.                 totalMinute = totalSecond / 60; // 总分钟数
  17.                 second = totalSecond % 60; // 秒数
  18.                 totalHour = totalMinute / 60; // 总小时数
  19.                 minute = totalMinute % 60; // 分钟数
  20.                 day = totalHour / 24; // 天数
  21.                 hour = totalHour % 24; // 小时数

  22.                 dayString = day == 0 ? "" : day + "天";
  23.                 hourString = hour == 0 ? "" : hour + "小时";
  24.                 minuteString = minute == 0 ? "" : minute + "分钟";
  25.                 secondString = second == 0 ? "" : second + "秒";
  26.                 // 打印时间
  27.                 System.out.println(dayString + hourString + minuteString + secondString);
  28.         }
  29. }
复制代码


作者: 黎志勇    时间: 2014-6-14 14:12
再改了一下,好验证对不对
  1. public class Test {
  2.         public static void main(String args[]) {
  3.                 System.out.println(formattedTime(-1000));
  4.                 System.out.println(formattedTime(0));
  5.                 System.out.println(formattedTime(1));
  6.                 System.out.println(formattedTime(60));
  7.                 System.out.println(formattedTime(61));
  8.                 System.out.println(formattedTime(3600));
  9.                 System.out.println(formattedTime(3601));
  10.                 System.out.println(formattedTime(3660));
  11.                 System.out.println(formattedTime(3661));
  12.                 System.out.println(formattedTime(86399));
  13.                 System.out.println(formattedTime(86400));
  14.                 System.out.println(formattedTime(86401));
  15.                 System.out.println(formattedTime(86460));
  16.                 System.out.println(formattedTime(86461));
  17.                 System.out.println(formattedTime(90000));
  18.                 System.out.println(formattedTime(90001));
  19.                 System.out.println(formattedTime(90060));
  20.                 System.out.println(formattedTime(90061));
  21.         }
  22.        
  23.         static String formattedTime(int time){
  24.                 String secondString, minuteString, hourString, dayString;
  25.                 int totalSecond, totalMinute, totalHour;
  26.                 int second, minute, hour, day;
  27.                 totalSecond = time;
  28.                 // 格式化时间
  29.                 if(totalSecond<0){
  30.                         return "时间不合法,请输入0或正整数";
  31.                 }
  32.                 if (totalSecond == 0) {
  33.                         return "0,折合时间:0秒";
  34.                 }
  35.                 totalMinute = totalSecond / 60; // 总分钟数
  36.                 second = totalSecond % 60; // 秒数
  37.                 totalHour = totalMinute / 60; // 总小时数
  38.                 minute = totalMinute % 60; // 分钟数
  39.                 day = totalHour / 24; // 天数
  40.                 hour = totalHour % 24; // 小时数

  41.                 dayString = day == 0 ? "" : day + "天";
  42.                 hourString = hour == 0 ? "" : hour + "小时";
  43.                 minuteString = minute == 0 ? "" : minute + "分钟";
  44.                 secondString = second == 0 ? "" : second + "秒";
  45.                 return time + ",折合时间:"+dayString + hourString + minuteString + secondString;
  46.         }
  47.        
  48. }
复制代码

运行结果
  1. 时间不合法,请输入0或正整数
  2. 0,折合时间:0秒
  3. 1,折合时间:1秒
  4. 60,折合时间:1分钟
  5. 61,折合时间:1分钟1秒
  6. 3600,折合时间:1小时
  7. 3601,折合时间:1小时1秒
  8. 3660,折合时间:1小时1分钟
  9. 3661,折合时间:1小时1分钟1秒
  10. 86399,折合时间:23小时59分钟59秒
  11. 86400,折合时间:1天
  12. 86401,折合时间:1天1秒
  13. 86460,折合时间:1天1分钟
  14. 86461,折合时间:1天1分钟1秒
  15. 90000,折合时间:1天1小时
  16. 90001,折合时间:1天1小时1秒
  17. 90060,折合时间:1天1小时1分钟
  18. 90061,折合时间:1天1小时1分钟1秒
复制代码

作者: qq474249147    时间: 2014-6-14 15:29
可以把进位判断的值写成数组,循环判断,




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