本帖最后由 adalvik 于 2015-4-18 09:30 编辑
刚才在论坛看到一个朋友发基础测试题 感觉好难啊,,咱现在啥都不会
不过有这么个题
从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
键盘输入6,打印6秒;
键盘输入60,打印1分;
键盘输入66,打印1分6秒;
键盘输入666,打印11分6秒;
键盘输入3601,打印1小时1秒
感觉会那么一点点
- import java.util.Hashtable;
- import java.util.Scanner;
- public class demo06 {
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
-
-
- while(true)
- {
- System.out.print("请输入一个整数 退出程序输入-1:\n");
- int t =sc.nextInt();
- if(t>0)
- {
- getDay(t);
- }
- else
- {
- if(t==-1)
- {
- System.out.println("程序结束");
- break;
- }
- else
- {
- System.out.print("输入错误请从新输入\n");
- }
-
-
- }
- }
-
- sc.close();
- }
- /**
- * @param time 输入秒
- * 将转换输出
- */
- public static void getDay(int time) {
- int i = time;
- int count = 0;// 记录时间标志
- int temp = 0;
- Hashtable<String, Integer> hash = new Hashtable<String, Integer>();
- while (i > 0) {
- temp = i % 60;
- if(count==2)
- {
- i = i / 24;
- temp%=24;
- }
- else
- {
- i = i / 60;
- }
-
- // 秒 ,分, 小时, 天
- if (count == 0) {
- hash.put("秒", temp);
- hash.put("分", i);
- } else if (count == 1) {
- hash.put("分", temp);
- hash.put("小时", i);
- } else if (count == 2) {
- hash.put("小时", temp);
- hash.put("天", i);
- } else {
- break;
- }
- count = count + 1;
- }
- StringBuffer sb = new StringBuffer();
- //反正 0 是不需要打印的 默认没取到就给0
- int day = hash.containsKey("天") == true ? hash.get("天") : 0;
- int hours = hash.containsKey("小时") == true ? hash.get("小时") : 0;
- int minute = hash.containsKey("分") == true ? hash.get("分") : 0;
- int second = hash.containsKey("秒") == true ? hash.get("秒") : 0;
- if (day != 0) {
- sb.append(day + "天");
- }
- if (hours != 0) {
- sb.append(hours + "小时");
- }
- if (minute != 0) {
- sb.append(minute + "分");
- }
- if (second != 0) {
- sb.append(second + "秒");
- }
- System.out.println(sb.toString());
- }
- }
复制代码
运行结果
请输入一个整数 退出程序输入-1:
6
6秒
请输入一个整数 退出程序输入-1:
60
1分
请输入一个整数 退出程序输入-1:
66
1分6秒
请输入一个整数 退出程序输入-1:
666
11分6秒
请输入一个整数 退出程序输入-1:
3601
1小时1秒
请输入一个整数 退出程序输入-1:
-1
程序结束
|
|