我必须编写一个程序来计算秒数,天数,小时数,分钟数,秒数。
到目前为止我的代码:
public static void main(String[] args) {
long s = IOTools.readLong("Give seconds:");
long a = s / 31536000;
long t = (s % 3153600) / 86400;
long h = ((s % 3153600) % 86400) / 3600;
long m = (((s % 3153600) % 86400) % 3600) / 60;
long r = (((s % 3153600) % 86400) % 3600) % 60;
System.out.println( a + " year(s) " + t + " day(s) " + h + " hour(s) " + m + " minute(s) " + r + " second(s)!");
}
我想让它变得更简单,例如使用if-else条件。类似于:将秒数除以31536000,将其保存在a
中。如果有剩余部分,请执行此操作,依此类推。但我不知道如何开始。
我也有问题来进行类型转换。我不想一直使用long
,因为当程序计算天数时不再需要{。}}。
答案 0 :(得分:1)
如您所知,您可以在每个步骤后使用剩余部分:
long s = IOTools.readLong("Give seconds:");
long a = s / 31536000;
s %= 31536000;
long t = s / 86400;
s %= 86400;
long h = s / 3600;
s %= 3600;
long m = s / 60;
long r = s % 60;
答案 1 :(得分:1)
我认为这里的Calendar
课程非常方便,您可以避免复杂的计算。从输入中读取秒数后,您只需将它们转换为毫秒并将结果传递给Calendar
实例。
然后,您可以像这样获取日,月,年:
long s = IOTools.readLong("Give seconds:");
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(s * 1000);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY);
答案 2 :(得分:-2)
BigDecimal input = new BigDecimal("your input");
long longVal = input.longValue();
int hours = (int) longVal / 3600;
int remainder = (int) longVal - hours * 3600;
int mins = remainder / 60;
remainder = remainder - mins * 60;
int secs = remainder;
System.out.println("hours: "+hours);
System.out.println("Mins: "+mins);
System.out.println("Sec: "+secs)