[英]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.