黑马程序员技术交流社区

标题: 从键盘接受一个数字,打印该数字表示的时间,最大单位... [打印本页]

作者: code2014    时间: 2014-5-9 08:02
标题: 从键盘接受一个数字,打印该数字表示的时间,最大单位...
importjava.io.*;
importjava.util.*;
public class Time {
        public static void main(String[] args) throws IOException
        {  Scanner time = newScanner(System.in);
               int t,second,mm,hour,day;  
                t = time.nextInt();  
              if(t >0){
                if(t >=3600*24)     //判断天数  
                 {  
                    day = t/(3600*24);  
                    t= t- day * (3600*24);  
                    System.out.print(day+"");  
                  }  
              if((3600*24)>t && t>=3600)
                {  
                    hour = t/3600;  
                    t = t -hour*3600;  
                    System.out.print(hour+"小时");  
                 }  
                     
               if(3600>t && t>=60)  
                 {                     
                  mm = t/60;  
                   t = t -mm*60;  
                   System.out.print(mm+"分钟");
                 }                    
                 if(60>t && t>0)   //判断秒  
                 {  
                    second = t;  
                     System.out.print(second+"");  
                 }
                          
             }else{  
                 System.out.print("输入的时间不对");  
                  }  
        }
}


作者: 流沙    时间: 2014-5-16 10:16
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
作者: ZHAOWEI    时间: 2014-5-25 11:11
package com.itheima;

import java.util.Scanner;

/**
* 3、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
*        键盘输入6,打印6秒;
*        键盘输入60,打印1分;
*        键盘输入66,打印1分6秒;
*        键盘输入666,打印11分6秒;
*        键盘输入3601,打印1小时1秒
* @author Administrator
*/

public class Test3 {
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个数字:");
                int n = sc.nextInt();
                num(n);
        }

        private static void num(int n) {
                int m=0;
                int l=0;
                int k=0;
                int j=0;
                        //得出天数
                        if (n/(3600*24) !=0) {
                                j = n/(3600*24);
                                System.out.println(j+"天");
                        }
                        //得出小时数
                        if (n%(3600*24)/3600 != 0) {
                                m = n%(3600*24) / 3600;
                                System.out.print(m+"小时");
                        }
                        //得出分数
                        if ((n%(3600*24)%3600/60) != 0) {
                                l = n%(3600*24) % 3600 / 60;
                                System.out.print(l+"分");
                        }
                        //得出秒数
                        if ((n%(3600*24)%3600%60) != 0) {
                                k = n%(3600*24) % 3600 % 60;
                                System.out.print(k+"秒");
                        }
        }
       
}
作者: qfch    时间: 2014-6-5 19:42
学习一下啊
作者: _童金辉    时间: 2014-8-11 00:33
学习了                        
作者: 孤鸢    时间: 2014-8-18 20:18
学习了,读取键盘输入是不是还有其他方法
作者: 孤鸢    时间: 2014-8-22 23:44
本帖最后由 孤鸢 于 2014-8-23 00:17 编辑

我自己解决的
  1. import java.util.*;
  2. public class Test4
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 int second,minute,hour,day;
  7.                 Scanner in = new Scanner(System.in);
  8.                 int time;
  9.                 //循环读键盘输入的一个整数
  10.                 System.out.print("请输入一个整数(0表示退出):");
  11.                 while((time = in.nextInt()) != 0)
  12.                 {
  13.                         if(time < 60)
  14.                         {
  15.                                 second = time;
  16.                                 System.out.println(second+"秒");
  17.                         }
  18.                         else if(time>=60 && time < 3600)
  19.                         {
  20.                                 minute = time/60;
  21.                                 second = time%60;
  22.                                 System.out.println(minute+"分"+second+"秒");
  23.                         }
  24.                         else if(time>=3600 && time < 216000)
  25.                         {
  26.                                 hour = time/3600;
  27.                                 minute = (time%3600)/60;
  28.                                 second = time%60;
  29.                                 System.out.println(hour+"时"+minute+"分"+second+"秒");
  30.                         }
  31.                         else if(time >= 216000)
  32.                         {
  33.                                 day = time/216000;
  34.                                 hour = (time%216000)/3600;
  35.                                 minute = (time%3600)/60;
  36.                                 second = time%60;
  37.                                 System.out.println(day+"天"+hour+"时"+minute+"分"+second+"秒");
  38.                         }
  39.                         else
  40.                                 System.out.println("输入数据有误,请输入整数");
  41.                 }
  42.         }
  43. }
复制代码

审核过了发出来的,
这样能不加技术分呢  @加分  大神
作者: Fightin黑马    时间: 2014-8-24 22:06
import java.util.Scanner;
public class Test4 {

        public static void main(String[] args) {
                Scanner sc=new Scanner(System.in);
                System.out.print("请输入一个数字:");
                //定义一个变量接收输入的数据
                int time=sc.nextInt();
                //定义数组1接收天,时,分,秒的数值
                int[]arr1=new int[4];
                arr1[3]=time%60;
                arr1[2]=(time/60)%60;
                arr1[1]=(time/3600)%24;
                arr1[0]=time/86400;
                //定义字符串数组使数值和天时分秒对应
                String[]arr2=new String[4];
                arr2[0]=arr1[0]+"天";
                arr2[1]=arr1[1]+"小时";
                arr2[2]=arr1[2]+"分";
                arr2[3]=arr1[3]+"秒";
                //对于天时分秒中数值为0的清除对于单位
                for(int i=0;i<arr1.length;i++){
                        if(arr1[i]==0){
                                arr2[i]="";
                        }
                }
                //打印输入数字对应的时间
                for(int i=0;i<arr2.length;i++){
                        System.out.print(arr2[i]);       
                }
        }

}


作为参考
作者: Fightin黑马    时间: 2014-8-24 22:08
孤鸢 发表于 2014-8-18 20:18
学习了,读取键盘输入是不是还有其他方法

有的 用io不过我也还没学到呢 :P
作者: Fightin黑马    时间: 2014-8-24 22:10
孤鸢 发表于 2014-8-22 23:44
我自己解决的

审核过了发出来的,

你这个好像不满足要求的,比如60输出的应该是1分,而不是1分0秒
作者: 孤鸢    时间: 2014-8-25 15:56
Fightin黑马 发表于 2014-8-24 22:10
你这个好像不满足要求的,比如60输出的应该是1分,而不是1分0秒

嗯...这样的话,多加个判断,
作者: 要你快乐    时间: 2014-9-3 10:49
这种方法为什么有一段数输出不了呢,比如216000~216009
作者: 要你快乐    时间: 2014-9-3 11:07
能出来了,之前myeclipse没反应过来
作者: 2406035442    时间: 2014-10-8 21:39
楼主少了个while 判断吧  输入了负数或者0 不能继续输入了
作者: inception    时间: 2014-10-9 21:05
楼主和3楼的方法不错,楼主的会出现0秒,在最后一个if中加个判断,如果t不等于0,就打印t+“秒”
作者: 郑松    时间: 2014-10-27 18:30
赞一个!
作者: 考拉是只猫    时间: 2014-11-26 10:28
time的资源是否需要关闭?
作者: xingyunjunjun    时间: 2014-12-10 11:36
学习了,谢谢
作者: __残梦、    时间: 2015-1-27 22:50
好好好!!!
作者: 李永佳    时间: 2015-5-10 17:54
打印秒的那个print应该加上ln吧,否则光标无法调到下一行
作者: 张红兴    时间: 2015-5-15 08:49
楼上你写程序是不是很烂?



import java.util.Scanner;
public class Test1 {
         public static void main(String[] args){
                 Scanner input=new Scanner(System.in);    //键盘输入
                 System.out.println("请输入数字i:");      
    int i=input.nextInt();    //接收i
     int s=i%60;       //秒
                 int m=i/60%60;   //分钟
                 int h=i/3600%60; //小时
                 int d=i/3600/24; //天
                  if (i>=86400){      
       System.out.println(d+"天"+h+"小时"+m+"分钟"+s+"秒");
    }else if(i>=3600&&i<86400){     
                         System.out.println(h+"小时"+m+"分钟"+s+"秒");
    }else if (i>=60&&i<3600){
                          System.out.println(m+"分钟"+s+"秒");
    }else if (i>=0&&i<60){                        
       System.out.println(s+"秒");
                  }        
        }
         }
作者: 腹黑生姜    时间: 2015-6-9 12:18
输入字符不可以啊
作者: fanxin_meng    时间: 2015-6-30 15:49
学习一下
作者: 王竹根    时间: 2015-7-14 11:49
importjava.io.*;
importjava.util.*;
public class Test2 {
        public static void main(String[] args)
throws IOException   
        {  Scanner time = newScanner(System.in);
               int a,second,minute,hour,day;   
               system.out.println("请输入一个数:");
               t = time.nextInt();
              if(a >0){
                if(a >=3600*24)     //判断天数  
                 {  
                    day = t/(3600*24);  
                    a= a- day * (3600*24);  
                    System.out.print(day+"天");  
                  }  
              if((3600*24)>a && a>=3600)
                {  
                    hour = a/3600;  
                    a = a -hour*3600;  
                    System.out.print(hour+"小时");  
                 }  
                     
               if(3600>a && a>=60)  
                 {                     
                  minute = a/60;  
                   a = a -minute*60;  
                   System.out.print(minute+"分钟");
                 }                    
                 if(60>a && a>0)   //判断秒  
                 {  
                    second = a;  
                     System.out.print(second+"秒");  
                 }
                          
             }else{  
                 System.out.printIn("输入的时间不对");  
                  }  
        }
}
作者: 鹏飞    时间: 2015-8-12 08:44
学习一下!!
作者: lishuai881512    时间: 2015-9-2 22:49
郑松 发表于 2014-10-27 18:30
赞一个!

学习学习呵呵

作者: cuijinghao    时间: 2015-9-24 02:35
ZHAOWEI 发表于 2014-5-25 11:11
package com.itheima;

import java.util.Scanner;

不赖,这个方法吊,我自己写的那就是一坨shit
作者: 刘德坤    时间: 2015-10-7 10:38
进来学习学习!
作者: 切比雪夫    时间: 2015-10-27 10:16
学习一下!
作者: huangjunhui    时间: 2015-10-28 23:42
顶。不错,支持。

作者: 帮助信息    时间: 2015-10-31 16:17
w为什么看不懂啊。。
作者: 传奇查    时间: 2015-11-29 20:32
发现大家的答案各种Bug~~发个无bug版本的~代码用的是笨方法~

容易的方法是定义四个变量d,h,m,s
当d,h,m,s等于0时,不输出,大于0时才输出
  1. package cn.itheima.test;
  2. /**
  3. * 1、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
  4. *                 键盘输入6,打印6秒;
  5. *                 键盘输入60,打印1分;
  6. *                 键盘输入66,打印1分6秒;
  7. *                 键盘输入666,打印11分6秒;
  8. *                 键盘输入3601,打印1小时1秒
  9. */
  10. import java.util.*;
  11. public class Test1 {
  12.         public static void main(String[] args) {
  13.                 System.out.println("请输入正整数:");
  14.                 Scanner sc = new Scanner(System.in);
  15.                 int x = sc.nextInt();
  16.                 if(x>0&&x<60){//控制秒
  17.                         System.out.println(x+"秒");
  18.                 }else if(x>=60&&x<3600){//控制分
  19.                         if(x%60==0){
  20.                                 System.out.println(x/60+"分");
  21.                         }else{
  22.                         System.out.println(x/60+"分"+x%60+"秒");
  23.                         }
  24.                 }else if(x>=3600&&x<(3600*24)){//控制小时
  25.                         if(x%3600==0){
  26.                                 System.out.println(x/3600+"小时");
  27.                         }else if(x%60==0){
  28.                                 System.out.println(x/3600+"小时"+x%3600+"秒");
  29.                         }else{
  30.                                 if(x%3600<60){//超过某小时,但是还没到达分的情况
  31.                                         System.out.println(x/3600+"小时"+x%60+"秒");
  32.                                 }else{
  33.                                         System.out.println(x/3600+"小时"+(x%3600)/60+"分"+x%60+"秒");
  34.                                 }
  35.                         }
  36.                 }else if(x>=(3600*24)){//控制天
  37.                         if(x%(3600*24)==0){
  38.                                 System.out.println(x/(3600*24)+"天");
  39.                         }else if(x%3600==0){
  40.                                 System.out.println(x/(3600*24)+"天"+x/3600+"小时");
  41.                         }else if(x%60==0){
  42.                                 System.out.println(x/(3600*24)+"天"+x/3600+"小时"+x/60+"分");
  43.                         }else{
  44.                                 if(x%(3600*24)<60){//超过某天,但是还未到分的情况
  45.                                         System.out.println(x/(3600*24)+"天"+x%60+"秒");
  46.                                 }else if(x%(3600*24)<3600){//超过某天某分,但是还未到达小时的情况
  47.                                         System.out.println(x/(3600*24)+"天"+x/60+"分"+x%60+"秒");
  48.                                 }else{
  49.                                         System.out.println(x/(3600*24)+"天"+x/3600+"小时"+x/60+"分"+x%60+"秒");
  50.                                 }
  51.                         }
  52.                 }else{
  53.                         System.out.println("时间格式不正确");
  54.                 }       
  55.         }
  56. }
复制代码




作者: VisionDo    时间: 2015-12-8 15:01
  1. import java.math.BigDecimal;
  2. import java.util.Scanner;

  3. /*
  4. * 从键盘接受一个数字,打印该数字表示的时间,最大单位到天
  5. *
  6. */
  7. public class Test3 {

  8.         public static void main(String[] args) {
  9.                
  10.                 final int MAX_INPUT_NUM = 31*24*60*60;//用户可输入的最大数值
  11.                 double InputNum;
  12.                
  13.                 Scanner sc = new Scanner(System.in);
  14.                 System.out.print("请输入任意正数:");
  15.                 InputNum = sc.nextDouble();
  16.                
  17.                 //数据有效性检查
  18.                 while(InputNum<0 || InputNum >  MAX_INPUT_NUM  ){
  19.                         System.out.print("数据有误,请重新输入:");
  20.                         InputNum = sc.nextDouble();       
  21.                 }
  22.                
  23.                 //转换时间
  24.                 Num_To_Time(InputNum);

  25.         }
  26.        
  27.        
  28.         /**
  29.          *
  30.          * @param num 用户输入的数字
  31.          *   
  32.          * 根据用户输入的数值(包括小数),输出对应的时间
  33.          *
  34.          */
  35.         private static void Num_To_Time(double num){
  36.                
  37.                 int time = double_to_int(num);
  38.                
  39.                 int h,m,s,d;
  40.                 String Info = "";
  41.                
  42.                 d = time/(3600*24);//得到日数
  43.                 h = (time - d*3600*24)/3600;//得到小时  
  44.                 m = (time-d*3600*24-h*3600)/60;//得到分钟  
  45.                 s = time%60;//得到秒
  46.                 /*
  47.                  * 求余的话,小时和分钟的分母可能为0,减法就避免了这个问题
  48.                  *
  49.                  */
  50.                
  51.                
  52.                 Info = d+"天"+h+"小时"+m+"分"+s+"秒";//得到标准的时间范式
  53.                 /*
  54.                     * 数据有可能为 10天0小时20分3秒
  55.                     * 下面的判断过程就避免了出现错误结果:1天23秒
  56.                     * 1 0天 0小时2 0分 3秒
  57.                     * 其中, 0天 0小时 0分均不会被替换掉
  58.                     *
  59.                     */
  60.                 if(d < 10){
  61.                         Info = Info.replace("0天", "");
  62.                 }
  63.                
  64.                 if(h < 10)
  65.                         Info = Info.replace("0小时", "");
  66.                
  67.                 if(m < 10)
  68.                         Info = Info.replace("0分", "");

  69.                 if(s < 10)
  70.                         Info = Info.replace("0秒", "");
  71.                
  72.                 System.out.println(Info);
  73.         }
  74.        

  75.         /**
  76.          * @param DoubleNum double型数值
  77.          * [url=home.php?mod=space&uid=84843]@Return[/url] DoubleNum四舍五入后的整型数值
  78.          *
  79.          * eg.
  80.          *   DoubleNum = 4.34 return 4
  81.          *   DoubleNum = 4.64 return 5
  82.          *   
  83.          */
  84.         private static int double_to_int(double DoubleNum){
  85.                 int IntNum;
  86.                 BigDecimal BD = new BigDecimal(DoubleNum);
  87.                 IntNum =BD.setScale(0, BigDecimal.ROUND_HALF_UP).intValue();//四舍五入取整
  88.                 return IntNum;
  89.         }
  90.        
  91.        
  92. }
复制代码

作者: misy1118    时间: 2015-12-26 16:28
孤鸢 发表于 2014-8-22 23:44
我自己解决的

审核过了发出来的,

哪来的216000秒这么多啊--!
作者: climb    时间: 2016-5-19 18:35
Scanner sc = new Scanner(System.in);
                int num = sc.nextInt();
                if (num>=0&&num<60) {
                        System.out.println(num+"秒");
                }else if (num==60) {
                        System.out.println("1分");
                }else if (num>60&&num<3600) {
                        System.out.println(num/60+"分"+num%60+"秒");
                }else if (num==3600) {
                        System.out.println("1小时");
                }else if (num>3600&&num<86400) {
                        System.out.println(num/3600+"小时"+(num-3600)/60%60+"分"+num%60+"秒");
                }else if (num==86400) {
                        System.out.println("1天");
                }else if (num>86400) {
                        System.out.println(num/86400+"天"+(num-86400)/3600%24+"小时"+(num-86400)/60%60+"分钟"+num%60+"秒");
                }
作者: zhoujiegun    时间: 2016-6-5 11:48
我就被考到这题了,太扯,当时没做出来,后来做出来了   下面看代码
                Scanner sc = new Scanner(System.in);
                int num = sc.nextInt();
                if(num < 60 && num>=0){                       
                        System.out.println(num+"秒");
                }else if ((num == 60 )){                       
                        System.out.println(num/60+"分");
                }else if(num>60 && num<3600){
                        System.out.println(num/60+"分"+num%60+"秒");
                }else if(num == 3600){
                        System.out.println(num/60/60+"小时");
                }else if(num>3600 && num<86400){
                        System.out.println(num/60/60+"小时"+num/60%60+"分"+num%60+"秒");
                }else if(num==86400){
                        System.out.println(num/24/60/60+"天");
                }else if(num >86400){
                        System.out.println(num/24/60/60+"天"+ num/60/60%24+"小时"+num/60%60+"分"+num%60+"秒");
                       
                }
作者: zhoujiegun    时间: 2016-6-11 19:39
我想这才是楼主要的效果. 复制到main方法中测试

Scanner sc = new Scanner(System.in);
                int num = sc.nextInt();
                if(num < 60 && num>=0){                       
                        System.out.println(num+"秒");
                }else if ((num == 60 )){                       
                        System.out.println(num/60+"分");
                }else if(num>60 && num<3600){
                        System.out.println(num/60+"分"+num%60+"秒");
                }else if(num == 3600){
                        System.out.println(num/60/60+"小时");
                }else if(num>3600 && num<86400){
                        System.out.println(num/60/60+"小时"+num/60%60+"分"+num%60+"秒");
                }else if(num==86400){
                        System.out.println(num/24/60/60+"天");
                }else if(num >86400){
                        System.out.println(num/24/60/60+"天"+ num/60/60%24+"小时"+num/60%60+"分"+num%60+"秒");

                }
作者: 折花道人    时间: 2016-8-23 16:14
本帖最后由 折花道人 于 2016-8-23 16:16 编辑

import java.util.Date;
import java.util.Scanner;

public class Test2 {

        /**
         * @param args
         */
        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个整数");
                int num = sc.nextInt();
                StringBuilder sb = new StringBuilder();
                Date date = new Date(num * 1000);
                int day = date.getDate() - 1;
                int hours = date.getHours() - 8;
                int min = date.getMinutes();
                int sec = date.getSeconds();
                if(day> 0) {
                        sb.append(day).append("天");
                }
                if(hours> 0) {
                        sb.append(hours).append("小时");
                }
                if(min > 0) {
                        sb.append(min).append("分");
                }
                if(sec > 0) {
                        sb.append(sec).append("秒");
                }
                System.out.println(sb);
        }
}

别问我为啥用这过时的方法,面试老师逼的




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