请知道的朋友给我一个答案谢谢啦,奉上一段代码
- /*
- * 3、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
- 键盘输入6,打印6秒;
- 键盘输入60,打印1分;
- 键盘输入66,打印1分6秒;
- 键盘输入666,打印11分6秒;
- 键盘输入3601,打印1小时1秒
-
- 思路:从键盘接受 System.in ,使用类Scanner while(true) time = in.nextInt
- 做出判断- 如果小于60 直接输出 System.out.println(time+"秒");
- -如果大于等于60,小于3600 System.out.prinln(time/60+"分"+time%60+"秒");
- - 如果大于等于3600,小于 3600*24=86400
- hours = time/3600
- minutes = (time-3600*hours)/60 在此处需要作出判断是否大于60,如果大于则用此行代码,否则直接打印
- System.out.println(hours+minutes/60+"分"+time%60+"秒");
- -如果大于等于86400
- days = time/86400
- hours = (time-days*86400)//判断此数是否大于3600
- minutes = ()
- 写到这里的时候发现需要使用递归了,而且System.out.println使用次数过多应该封装起来
- int类型的数不够用,使用long类型
-
- */
- public class Test1
- {
- public static void main(String[] args)
- {
- printTimes();
- }
-
- public static void printTimes()
- {
- System.out.println("请保证您输入的数据在19位之内(包括19位),否则将无法计算");
- while(true)
- {
- Scanner in = new Scanner(System.in);
- long time = in.nextLong();
- Times(time);
- System.out.println();
- }
- }
-
- public static void Times(long time)
- {
- if(time<0)
- {
- throw new RuntimeException("输入数据不能为负数");
- }
- if(time==0)
- {
- sop("");
- }
- if(time<60)
- {
- sop(time+"秒");
- }else if(time>=60 && time<3600)
- {
- if(time==60)
- {
- sop("1分");
- }else
- {
- sop(time/60+"分"+time%60+"秒");
- }
- }else if(time>=3600 && time<86400)
- {
- if(time==3600)
- {
- sop("1小时");
- }else
- {
- long hours = time/3600;
- sop(hours+"小时");
- long minutes = (time - 3600*hours);
- Times(minutes);
- }
- }else if(time>=86400)
- {
- if(time==86400)
- {
- sop("1天");
- }else
- {
- long days = time/86400;
- sop(days+"天");
- long hours = time - days*86400;
- Times(hours);
- }
- }
- }
-
- public static void sop(String time)
- {
- System.out.print(time);
- }
- }
复制代码 |
|