A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Yuto吕 中级黑马   /  2015-12-4 17:32  /  711 人查看  /  13 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

个人感觉解题思路可以,包括录入验证,包装方法,如果大家有好的方法,也可以提供给我,或者在我代码的基础上加以修改

package com.itheima;
import java.io.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
/*
*第四题:从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
* 键盘输入6,打印6秒;
* 键盘输入60,打印1分;
* 键盘输入66,打印1分6秒;
* 键盘输入666,打印11分6秒;
* 键盘输入3601,打印1小时1秒;
*/
public class Test4 {
public static void main(String[] args)  {
    System.out.println("请输入正整数:");
    //创建BufferedReader对象,获取输入值
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
  
  try {
   String sSecond=br.readLine();
   //当录入非正整数,要求重新输入新值,直到输入正确
   while(!IsNumeric(sSecond))
   {
    System.out.println("刚才录入内容非正整数类型,请输入正整数:");
    sSecond=br.readLine();
   }   
   int nSecond=Integer.parseInt(sSecond);
   
    String sTime=ConvertTime(nSecond);
      System.out.println(sTime);
  } catch (IOException e) {
   e.printStackTrace();
  }
  
}
//定义1个方法,判断录入值是否为数值型
  static boolean IsNumeric(String str){
     Pattern pattern = Pattern.compile("([1-9][0-9]*)|([0-9])");
     Matcher isNum = pattern.matcher(str);
     if( !isNum.matches() ){
         return false;
     }
     return true;
  }
//创建一个时间转换时间的方法
    public static String ConvertTime(int pnSecond){
        //定义返回值
        String sTime="";
        int[] arrTime=new int[4];
        String[] arrString=new String[]{"秒","分","时","天"};
        //定义除数
        int nDivisor=60;
        for(int i=0;i<4;i++)
        {
         if(i==2)
         {//最后一次运算除数是24
          nDivisor=24;
         }   
         else if(i==3)//最后一次不用计算天,直接得值
         {
          arrTime[i]=pnSecond;
          break;
         }
         //将余数的值放入数组中      
         if(pnSecond/nDivisor>0){
          arrTime[i]=pnSecond%nDivisor;
          pnSecond=pnSecond/nDivisor;           
            }
         else
         {
          arrTime[i]=pnSecond;
          break;
         }
         
        }
        for(int i=3;i>=0;i--)
        {
         if(arrTime[i]>0)
         {
          sTime+=arrTime[i]+arrString[i];
         }
        }
        return sTime;
    }
}

13 个回复

倒序浏览
看看,这是基础测试里面的吧
回复 使用道具 举报
來看看,感謝分享
回复 使用道具 举报
还是挺赞的
回复 使用道具 举报
Scanner sc=new Scanner(System.in);
                System.out.println("请输入");
                int num=sc.nextInt();
                if(num<60){
                System.out.println(num+"秒");
                }else if(num>=60&&num<3600){
                        int n1=num/60;
                        int n2=num%60;
                        System.out.println(n1+"分"+n2+"秒");
                }else if(num>=3600&&num<86400){
                        int n1=num/3600;
                        int n2=num%600;
                        int n3=num%60;
                        System.out.println(n1+"小时"+n2+"分"+n3+"秒");
                }else if(num>=86400){
                        int n=num/86400;
                        int n1=num/86400%3600;
                        int n2=num/86400%3600%600;
                        int n3=num/86400%3600%600%60;
                        System.out.println(n+"天"+n1+"小时"+n2+"分"+n3+"秒");
                }

点评

感觉不错的样子  发表于 2016-1-13 21:17
这道题不错,给力  发表于 2016-1-10 22:02
回复 使用道具 举报
乍一看以为输入6要打印6秒钟...
回复 使用道具 举报
感觉5L的if else太多了,
回复 使用道具 举报
olivor 中级黑马 2015-12-4 20:12:58
8#
谢分享!
回复 使用道具 举报
来看看  挺赞的
回复 使用道具 举报
不错   继续加油吧
回复 使用道具 举报
不错不错
回复 使用道具 举报
不错不错,赞赞
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马