[英]Converting seconds to Year Hour Minutes Seconds
我是一个新的,标准的开始,所以我将其余的排除在外。 我必须将每个int转换为秒,还是对吗? 因为当我手动进行反向计算并计算最终语句的秒数时,我得到了小时数差异。
Thx Casu
Scanner input = new Scanner(System.in);
final int secmin = 60;
final int day = 24;
final int year = 365;
int seconds = input.nextInt();
int minutes = seconds / secmin;
int remainSec = seconds % secmin ;
int hours = minutes / secmin;
int remainMin = hours % secmin;
int days = hours / day;
int remainHours = hours % day;
int years = days / year;
int remainDays = days % year;
if (minutes <= 59)
{
System.out.println(seconds + " seconds is " + minutes +" minutes and " + remainSec + " seconds");
}
else if (hours <= 23)
{
System.out.println(seconds + " seconds is " + hours +" hours and " + remainMin + " minutes " + remainSec + " seconds");
}
else if (days <= 364)
{
System.out.println(seconds + " seconds is " + days + " days " + remainHours +" hours and " + remainMin + " minutes " + remainSec + " seconds");
}
else
{
System.out.println(seconds + " seconds is " + years + " years " + remainDays + " days " + remainHours +" hours and " + remainMin + " minutes " + remainSec + " seconds");
}
我认为该语句需要更改:从“ int keepMin =小时%秒min;”开始
为“ int keepMin =分钟%秒/分钟;”。
休息都很好。
代码看起来不错。 但是,我将从if语句中删除“魔术数字”:
Scanner input = new Scanner(System.in);
final int secmin = 60;
final int day = 24;
final int year = 365;
int seconds = input.nextInt();
int minutes = seconds / secmin;
int remainSec = seconds % secmin ;
int hours = minutes / secmin;
int remainMin = hours % secmin;
int days = hours / day;
int remainHours = hours % day;
int years = days / year;
int remainDays = days % year;
if (minutes < secMin)
{
System.out.println(seconds + " seconds is " + minutes +" minutes and " + remainSec + " seconds");
}
else if (hours < day)
{
System.out.println(seconds + " seconds is " + hours +" hours and " + remainMin + " minutes " + remainSec + " seconds");
}
else if (days < year)
{
System.out.println(seconds + " seconds is " + days + " days " + remainHours +" hours and " + remainMin + " minutes " + remainSec + " seconds");
}
else
{
System.out.println(seconds + " seconds is " + years + " years " + remainDays + " days " + remainHours +" hours and " + remainMin + " minutes " + remainSec + " seconds");
}
我知道年/天/小时/分钟/秒的比率都是非常静态的,但是如果有人想在10秒到分钟和10分钟到小时之间查看您的代码怎么办? 然后,您只需要更改一个地方而不是两个地方即可。
在生产应用程序中,这可能会扩展到代码中的数百个位置,并且很难逐一追踪每个位置。
我确实输入=
1234234234秒
输出=
1234234234秒是39年50天2小时2分34秒
总和=
1229904000 s + 4320000 s + 7200 s + 120 s + 34 s = 1234231354 s
差异=
2880 s
当我改变时:
int keepMin =小时%秒最小值; “ to” int keepMin =分钟%秒最小;
然后:
1234234234秒是39年50天2小时50分钟34秒
结果:
48分钟添加
1229904000 s + 4320000 s + 7200 s + 3000 s + 34 s = 1234234234 s
且差异为0。
感谢您对user2006544的更正和对Steve的改进。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.