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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 adalvik 于 2015-4-18 09:30 编辑

刚才在论坛看到一个朋友发基础测试题 感觉好难啊,,咱现在啥都不会
不过有这么个题

从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:

键盘输入6,打印6秒;

键盘输入60,打印1分;

键盘输入66,打印1分6秒;

键盘输入666,打印11分6秒;

键盘输入3601,打印1小时1秒

感觉会那么一点点

  1. import java.util.Hashtable;
  2. import java.util.Scanner;

  3. public class demo06 {
  4.         public static void main(String[] args) {
  5.                 Scanner sc = new Scanner(System.in);
  6.                
  7.                
  8.                 while(true)
  9.                 {
  10.                         System.out.print("请输入一个整数 退出程序输入-1:\n");
  11.                         int t =sc.nextInt();
  12.                         if(t>0)
  13.                         {
  14.                                 getDay(t);
  15.                         }
  16.                         else
  17.                         {
  18.                                 if(t==-1)
  19.                                 {
  20.                                         System.out.println("程序结束");
  21.                                         break;
  22.                                 }
  23.                                 else
  24.                                 {
  25.                                         System.out.print("输入错误请从新输入\n");
  26.                                 }
  27.                                
  28.                        
  29.                         }
  30.                 }
  31.                
  32.                 sc.close();

  33.         }

  34.         /**
  35.          * @param time 输入秒
  36.          * 将转换输出
  37.          */
  38.         public static void getDay(int time) {
  39.                 int i = time;
  40.                 int count = 0;// 记录时间标志
  41.                 int temp = 0;
  42.                 Hashtable<String, Integer> hash = new Hashtable<String, Integer>();
  43.                 while (i > 0) {
  44.                         temp = i % 60;
  45. if(count==2)
  46. {
  47.                 i = i / 24;
  48.                 temp%=24;
  49. }
  50. else
  51. {
  52.                 i = i / 60;
  53. }
  54.                
  55.                         // 秒 ,分, 小时, 天

  56.                         if (count == 0) {
  57.                                 hash.put("秒", temp);
  58.                                 hash.put("分", i);
  59.                         } else if (count == 1) {
  60.                                 hash.put("分", temp);
  61.                                 hash.put("小时", i);
  62.                         } else if (count == 2) {
  63.                                 hash.put("小时", temp);
  64.                                 hash.put("天", i);
  65.                         } else {
  66.                                 break;
  67.                         }

  68.                         count = count + 1;
  69.                 }
  70.                 StringBuffer sb = new StringBuffer();
  71.                 //反正 0 是不需要打印的 默认没取到就给0
  72.                 int day = hash.containsKey("天") == true ? hash.get("天") : 0;
  73.                 int hours = hash.containsKey("小时") == true ? hash.get("小时") : 0;
  74.                 int minute = hash.containsKey("分") == true ? hash.get("分") : 0;
  75.                 int second = hash.containsKey("秒") == true ? hash.get("秒") : 0;

  76.                 if (day != 0) {
  77.                         sb.append(day + "天");
  78.                 }
  79.                 if (hours != 0) {
  80.                         sb.append(hours + "小时");
  81.                 }
  82.                 if (minute != 0) {
  83.                         sb.append(minute + "分");
  84.                 }
  85.                 if (second != 0) {
  86.                         sb.append(second + "秒");
  87.                 }

  88.                 System.out.println(sb.toString());
  89.         }
  90. }
复制代码




运行结果
请输入一个整数 退出程序输入-1:
6
6秒
请输入一个整数 退出程序输入-1:
60
1分
请输入一个整数 退出程序输入-1:
66
1分6秒
请输入一个整数 退出程序输入-1:
666
11分6秒
请输入一个整数 退出程序输入-1:
3601
1小时1秒
请输入一个整数 退出程序输入-1:
-1
程序结束




2 个回复

倒序浏览
不错不错,
回复 使用道具 举报
这个问题应该是在考流程控制的知识,虽然你的做法我看不懂,但是我相信流程控制就能做得出来。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马