将秒转换为年时分秒
Converting seconds to Year Hour Minutes Seconds
我是新手,标准的开始,所以我会省略其余部分。
我是否必须将每个 int 转换为秒,或者这是对的吗?
因为当我向后计算时,手动计算最终语句的秒数,我得到小时数的差异。
谢谢卡苏
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 remainMin = hours % sec min;"
到“int remainMin = minutes % secmin;”。
休息一切看起来不错。
代码看起来不错。但是,我会从 if 语句中删除 "Magic Numbers":
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");
}
我知道 year/day/hour/minute/second 比率都是相当静态的,但是如果有人想以 10 秒到分钟和 10 分钟到小时来查看您的代码怎么办?那么你只需要改变一个地方,而不是两个。
在生产应用程序中,这可能会增长到代码中的数百个位置,并且很难追查到每一个位置。
我确实输入了=
1234234234 秒
输出=
1234234234秒是39年50天2小时2分34秒
总和=
1229904000 秒 + 4320000 秒 + 7200 秒 + 120 秒 + 34 秒 = 1234231354 秒
差异=
2880 秒
当我改变时:
int remainMin = hours % secmin; "to" int remainMin = minutes % secmin;
然后:
1234234234秒是39年50天2小时50分34秒
结果:
48 分钟添加
1229904000 秒 + 4320000 秒 + 7200 秒 + 3000 秒 + 34 秒 = 1234234234 秒
相差0.
感谢 user2006544 的更正和 Steve 的改进。
我是新手,标准的开始,所以我会省略其余部分。 我是否必须将每个 int 转换为秒,或者这是对的吗? 因为当我向后计算时,手动计算最终语句的秒数,我得到小时数的差异。
谢谢卡苏
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 remainMin = hours % sec min;"
到“int remainMin = minutes % secmin;”。
休息一切看起来不错。
代码看起来不错。但是,我会从 if 语句中删除 "Magic Numbers":
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");
}
我知道 year/day/hour/minute/second 比率都是相当静态的,但是如果有人想以 10 秒到分钟和 10 分钟到小时来查看您的代码怎么办?那么你只需要改变一个地方,而不是两个。
在生产应用程序中,这可能会增长到代码中的数百个位置,并且很难追查到每一个位置。
我确实输入了=
1234234234 秒
输出=
1234234234秒是39年50天2小时2分34秒
总和=
1229904000 秒 + 4320000 秒 + 7200 秒 + 120 秒 + 34 秒 = 1234231354 秒
差异=
2880 秒
当我改变时:
int remainMin = hours % secmin; "to" int remainMin = minutes % secmin;
然后:
1234234234秒是39年50天2小时50分34秒
结果:
48 分钟添加
1229904000 秒 + 4320000 秒 + 7200 秒 + 3000 秒 + 34 秒 = 1234234234 秒
相差0.
感谢 user2006544 的更正和 Steve 的改进。