黑马程序员技术交流社区
标题:
从键盘接受一个数字,打印该数字表示的时间
[打印本页]
作者:
adalvik
时间:
2015-4-15 11:18
标题:
从键盘接受一个数字,打印该数字表示的时间
本帖最后由 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
程序结束
作者:
巴银
时间:
2015-4-15 11:32
不错不错,
作者:
静心明德
时间:
2015-4-15 13:02
这个问题应该是在考流程控制的知识,虽然你的做法我看不懂,但是我相信流程控制就能做得出来。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2