黑马程序员技术交流社区

标题: java入学第一题 [打印本页]

作者: 你媚你魅你    时间: 2014-7-28 16:48
标题: java入学第一题
从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:

键盘输入6,打印6秒;
键盘输入60,打印1分;
键盘输入66,打印1分6秒;
键盘输入666,打印11分6秒;
键盘输入3601,打印1小时1秒
作者: chen010yu    时间: 2014-7-28 17:06
路过进来看看
作者: 吴杰栋    时间: 2014-7-28 20:38
我还是初学者,只想到了这个笨方法
  1. package cn.demo;

  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;

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

  6.   键盘输入6,打印6秒;
  7.   键盘输入60,打印1分;
  8.   键盘输入66,打印1分6秒;
  9.   键盘输入666,打印11分6秒;
  10.   键盘输入3601,打印1小时1秒*/

  11. public class Demo {
  12.         public static void main(String[] args) throws IOException {
  13.                 BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  14.                 String str = bufr.readLine();
  15.                 int i = Integer.parseInt(str);
  16.                 if(i>=0 && i<=60)
  17.                         System.out.println(i+"秒");
  18.                 else if(i>60 && i<3600)
  19.                         System.out.println(i/60+"分"+(i-60*(i/60))+"秒");
  20.                 else if(i>=3600 && i<86400)
  21.                         System.out.println(i/3600+"小时"+(i-3600*(i/3600))+"秒");       
  22.         }
  23. }
复制代码

作者: 这个夏天的芬芳    时间: 2014-7-28 21:49
{:3_50:}{:3_50:}{:3_50:}{:3_50:}{:3_50:}{:3_50:}
作者: yqj    时间: 2014-7-29 15:38
我想到的用“%”运算的另一种方法,lz也可以参考参考
  1. import java.io.IOException;
  2. import java.util.Scanner;

  3. public class Test5 {
  4.         public static void main(String[] args) throws IOException {
  5.                 // 键盘录入获取时间值
  6.                 System.out.println("请输入时间值:");
  7.                 Scanner sc = new Scanner(System.in);
  8.                 int i = sc.nextInt();

  9.                 if (i >= 0 && i <= 60)
  10.                         System.out.println(i + "秒");
  11.                 else if (i > 60 && i < 3600)
  12.                         System.out.println(i / 60 + "分" + (i % 60) + "秒");
  13.                 else if (i >= 3600 && i < 86400)
  14.                         System.out.println(i / 3600 + "小时" + (i % 3600 / 60) + "分"
  15.                                         + (i % 60) + "秒");
  16.                 else if (i >= 86400) {
  17.                         System.out.println(i / 86400 + "天" + i % 86400 / 3600 + "小时"
  18.                                         + (i % 3600 / 60) + "分" + (i % 60) + "秒");
  19.                 }
  20.         }
  21. }
复制代码

作者: lpc4276139    时间: 2014-7-29 17:19
吴杰栋 发表于 2014-7-28 20:38
我还是初学者,只想到了这个笨方法

这么强悍。顶一个。。。。。
作者: zhuohong_xiao    时间: 2014-8-2 12:28
我还只是一个初学者阿.还不知道怎么做啊.学习了阿.
作者: 丸子    时间: 2014-8-2 12:43
看看我的,貌似繁琐
package com.itheima;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Text2 {

        /**
         * 2.从键盘接受一个数字,打印该数字表示的实际那,最大单位到天
         * @fjx
         *
         */
        public static void main(String[] args) throws IOException {
                // TODO Auto-generated method stub
                //读取输入的值
                BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                String line=br.readLine();
                int time=Integer.parseInt(line);
                //定义天、时、分
                int day = 0;
                int hours;
                int minute;
                //判断输入的数表示的时间
                if(time<60)                                       //用秒表示
                        System.out.println(time+"秒");
                else if(time<3600)                                //用分秒表示
                        System.out.println(time/60+"分"+time%60+"秒");
                else if(time<216000)                              //用时分秒表示
                        System.out.println(time/3600+"小时"+(time%3600)/60+"分"+(time%3600)%60+"秒");
                else                                              //用天时分秒表示
                {
                    day=time/216000;
                        time=time%216000;
                    hours=time/3600;
                    time=time%3600;
                    minute=time/60;
                        System.out.println(day+"天"+hours+"小时"+minute+"分"+time%60+"秒");
                }
                       
        }

}
作者: bbdeyouxang    时间: 2014-8-2 23:47
用到Calendar 类和正则,正则学的不好,不然能一行转化掉,代码如下,测试通过:
  1. import java.text.SimpleDateFormat;
  2. import java.util.Calendar;
  3. import java.util.Scanner;

  4. public class GetTimeBySecond
  5. {
  6.     private static SimpleDateFormat df= new SimpleDateFormat("HH小时mm分ss秒");

  7.     public static void main(String[] args) {
  8.         System.out.println("请输入一个数字");
  9.         Scanner input = new Scanner(System.in);
  10.         try{
  11.             int second = input.nextInt();
  12.             Calendar date = Calendar.getInstance();
  13.             date.set(0, 0, 0, 0, 0, second);
  14.             String dateStr = df.format(date.getTime());
  15.             dateStr = dateStr.replaceAll("[0]{2}[^x00-xff]{1,2}", "");//去掉00小时,00分和00秒
  16.             dateStr = dateStr.replaceAll("分[0]", "分").replaceAll("小时[0]", "小时");//将01分01秒这种情况转化为1分1秒的情况
  17.             System.err.println(dateStr.startsWith("0") ? dateStr.substring(1) : dateStr);//最后截取01小时这样的情况
  18.         }catch(Exception e){
  19.             System.err.println("您输入的不是数字");
  20.         }
  21.     }
  22. }
复制代码

作者: 沟门大杏    时间: 2014-8-3 09:18
不会。进来一看
作者: 韩天雷    时间: 2014-8-3 09:25
  1. package com.itheima;

  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;

  5. /**
  6. * 3、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
  7. *
  8. * 键盘输入6,打印6秒; 键盘输入60,打印1分; 键盘输入66,打印1分6秒;
  9. * 键盘输入666,打印11分6秒; 键盘输入3601,打印1小时1秒
  10. *
  11. * @author HanTianlei
  12. *
  13. */
  14. public class Test3 {

  15.         public static void main(String[] args) {
  16.                 // 提示输入一个数字
  17.                 System.out.println("请输入一个数字:");
  18.                 // 带缓冲的键盘读取流定义
  19.                 BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
  20.                 long num = 0;// 用来记录输入的数字
  21.                 String inputstr = null;// 用来记录从键盘读取来的字符串形式的数据
  22.                 try {
  23.                         // 从键盘读取数据
  24.                         inputstr = bf.readLine();
  25.                 } catch (IOException e) {
  26.                         // IO出错抛出一个RuntimeException,中断程序执行
  27.                         throw new RuntimeException("IO异常");
  28.                 }
  29.                 // 如果输入的数据转换失败,则给出相应提示
  30.                 try {
  31.                         num = Long.parseLong(inputstr);
  32.                 } catch (NumberFormatException e) {
  33.                         System.out.println("数字格式错误");
  34.                 }
  35.                 // 调用打印方法
  36.                 print(num);
  37.         }

  38.         // 打印方法实现,需传入键盘读取来的秒数
  39.         public static void print(long num) {
  40.                 // 定义三个整型常量,分别表示 分,小时,天所包含的秒数
  41.                 final int MINUTE = 60;
  42.                 final int HOUR = 60 * 60;
  43.                 final int DAY = 60 * 60 * 24;
  44.                 // 判断输入的数字是否大于零
  45.                 if (num < 0) {
  46.                         System.out.println("请输入一个大于零的数!");
  47.                         return;
  48.                 }
  49.                 // 求出天数,小时数,分钟数,秒数
  50.                 long day = num / DAY;
  51.                 long hour = (num % DAY) / HOUR;
  52.                 long minute = (num % HOUR) / MINUTE;
  53.                 long second = num % MINUTE;
  54.                 // 如果值为0,则不输出
  55.                 if (day != 0)
  56.                         System.out.print(day + "天");
  57.                 if (hour != 0)
  58.                         System.out.print(hour + "小时");
  59.                 if (minute != 0)
  60.                         System.out.print(minute + "分");
  61.                 if (second != 0)
  62.                         System.out.print(second + "秒");
  63.                 System.out.println();
  64.         }
  65. }
复制代码





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