黑马程序员技术交流社区
标题:
将我做的1道题,分享给大家
[打印本页]
作者:
Yuto吕
时间:
2015-12-4 17:32
标题:
将我做的1道题,分享给大家
个人感觉解题思路可以,包括录入验证,包装方法,如果大家有好的方法,也可以提供给我,或者在我代码的基础上加以修改
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;
}
}
作者:
wyasln
时间:
2015-12-4 19:16
看看,这是基础测试里面的吧
作者:
海划时代
时间:
2015-12-4 19:26
还是挺赞的
作者:
jiangshicun007
时间:
2015-12-4 19:57
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+"秒");
}
作者:
Weidan
时间:
2015-12-4 19:59
乍一看以为输入6要打印6秒钟...
作者:
Yuto吕
时间:
2015-12-4 20:04
感觉5L的if else太多了,
作者:
olivor
时间:
2015-12-4 20:12
谢分享!
作者:
张俊峰
时间:
2016-1-10 18:33
来看看 挺赞的
作者:
胖小子
时间:
2016-1-10 19:49
不错 继续加油吧
作者:
yifuyue
时间:
2016-1-11 22:11
不错不错
作者:
li151385
时间:
2016-1-12 09:15
不错不错,赞赞
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2