黑马程序员技术交流社区
标题:
求帮助
[打印本页]
作者:
人心如水
时间:
2014-6-14 11:58
标题:
求帮助
/*
* 3、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
* 键盘输入6,打印6秒;
* 键盘输入60,打印1分;
* 键盘输入66,打印1分6秒;
* 键盘输入666,打印11分6秒;
* 键盘输入3601,打印1小时1秒
*/
作者:
倪大大
时间:
2014-6-14 12:48
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
System.out.println(show(a));
}
public static String show(int a)
{
String str;
int x , y , z;
y=a/60;
z=a%60;
x=y/60;
if(x==0)
{
if(z!=0 & y!=0)
return str=y+"分"+z+"秒";
if(z==0 & y!=0)
return str=y+"分";
if(z!=0 & y==0)
return str=z+"秒";
}
else
{
y=y%60;
if(z!=0 & y!=0)
return str=x+"时"+y+"分"+z+"秒";
if(z==0 & y!=0)
return str=x+"时"+y+"分";
if(z!=0 & y==0)
return str=x+"时"+z+"秒";
}
return "请输入大于0的整数";
作者:
倪大大
时间:
2014-6-14 12:49
这是我考试得时候自己写的,又更简便的写法请各位大大贴出来 学习下,我总感觉我这写法太麻烦
作者:
黎志勇
时间:
2014-6-14 13:43
本帖最后由 黎志勇 于 2014-6-14 13:53 编辑
import java.util.Scanner;
public class Test {
public static void main(String args[]) {
String secondString, minuteString, hourString, dayString;
int totalSecond, totalMinute, totalHour;
int second, minute, hour, day;
// 输入时间
Scanner scanner = new Scanner(System.in);
System.out.println("请输入时间(非负整数):");
totalSecond = scanner.nextInt();
if (totalSecond == 0) {
System.out.println("0秒");
return;
}
// 格式化时间
totalMinute = totalSecond / 60; // 总分钟数
second = totalSecond % 60; // 秒数
totalHour = totalMinute / 60; // 总小时数
minute = totalMinute % 60; // 分钟数
day = totalHour / 24; // 天数
hour = totalHour % 24; // 小时数
dayString = day == 0 ? "" : day + "天";
hourString = hour == 0 ? "" : hour + "小时";
minuteString = minute == 0 ? "" : minute + "分钟";
secondString = second == 0 ? "" : second + "秒";
// 打印时间
System.out.println(dayString + hourString + minuteString + secondString);
}
}
复制代码
作者:
黎志勇
时间:
2014-6-14 14:12
再改了一下,好验证对不对
public class Test {
public static void main(String args[]) {
System.out.println(formattedTime(-1000));
System.out.println(formattedTime(0));
System.out.println(formattedTime(1));
System.out.println(formattedTime(60));
System.out.println(formattedTime(61));
System.out.println(formattedTime(3600));
System.out.println(formattedTime(3601));
System.out.println(formattedTime(3660));
System.out.println(formattedTime(3661));
System.out.println(formattedTime(86399));
System.out.println(formattedTime(86400));
System.out.println(formattedTime(86401));
System.out.println(formattedTime(86460));
System.out.println(formattedTime(86461));
System.out.println(formattedTime(90000));
System.out.println(formattedTime(90001));
System.out.println(formattedTime(90060));
System.out.println(formattedTime(90061));
}
static String formattedTime(int time){
String secondString, minuteString, hourString, dayString;
int totalSecond, totalMinute, totalHour;
int second, minute, hour, day;
totalSecond = time;
// 格式化时间
if(totalSecond<0){
return "时间不合法,请输入0或正整数";
}
if (totalSecond == 0) {
return "0,折合时间:0秒";
}
totalMinute = totalSecond / 60; // 总分钟数
second = totalSecond % 60; // 秒数
totalHour = totalMinute / 60; // 总小时数
minute = totalMinute % 60; // 分钟数
day = totalHour / 24; // 天数
hour = totalHour % 24; // 小时数
dayString = day == 0 ? "" : day + "天";
hourString = hour == 0 ? "" : hour + "小时";
minuteString = minute == 0 ? "" : minute + "分钟";
secondString = second == 0 ? "" : second + "秒";
return time + ",折合时间:"+dayString + hourString + minuteString + secondString;
}
}
复制代码
运行结果
时间不合法,请输入0或正整数
0,折合时间:0秒
1,折合时间:1秒
60,折合时间:1分钟
61,折合时间:1分钟1秒
3600,折合时间:1小时
3601,折合时间:1小时1秒
3660,折合时间:1小时1分钟
3661,折合时间:1小时1分钟1秒
86399,折合时间:23小时59分钟59秒
86400,折合时间:1天
86401,折合时间:1天1秒
86460,折合时间:1天1分钟
86461,折合时间:1天1分钟1秒
90000,折合时间:1天1小时
90001,折合时间:1天1小时1秒
90060,折合时间:1天1小时1分钟
90061,折合时间:1天1小时1分钟1秒
复制代码
作者:
qq474249147
时间:
2014-6-14 15:29
可以把进位判断的值写成数组,循环判断,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2