Java:将秒转换为分钟、小时和天
“输出应如下所示(最好回显输入):输入500000秒,即5天18小时53分20秒。(5天18:53:20小时)Java:将秒转换为分钟、小时和天,java,Java,“输出应如下所示(最好回显输入):输入500000秒,即5天18小时53分20秒。(5天18:53:20小时) 所以你们能告诉我应该怎么做吗,最简单的理解和做的方法是什么,请帮助大家,我真的被卡住了,他还说“不要硬编码”,我不太确定这是什么,但我想他希望我们给他们分配常量。看一下这个类 org.joda.time.DateTime 这允许您执行以下操作: old = new DateTime(); new = old.plusSeconds(500000); System.out.printl
所以你们能告诉我应该怎么做吗,最简单的理解和做的方法是什么,请帮助大家,我真的被卡住了,他还说“不要硬编码”,我不太确定这是什么,但我想他希望我们给他们分配常量。看一下这个类
org.joda.time.DateTime
这允许您执行以下操作:
old = new DateTime();
new = old.plusSeconds(500000);
System.out.println("Hours: " + (new.Hours() - old.Hours()));
但是,您的解决方案可能更简单:
您需要计算出一天中的秒数,将输入除以结果得到天数,然后从输入中减去以保留余数。
然后你需要计算出剩下的几个小时,
然后是会议记录,
最后的余数是秒
这是为您所做的分析,现在您可以关注代码了
您需要询问s/he“无硬编码”是什么意思,通常是指传递参数,而不是固定输入值。根据您运行代码的方式,有很多方法可以做到这一点。属性是java中常见的方法。请查看该类
org.joda.time.DateTime
这允许您执行以下操作:
old = new DateTime();
new = old.plusSeconds(500000);
System.out.println("Hours: " + (new.Hours() - old.Hours()));
但是,您的解决方案可能更简单:
您需要计算出一天中的秒数,将输入除以结果得到天数,然后从输入中减去以保留余数。
然后你需要计算出剩下的几个小时,
然后是会议记录,
最后的余数是秒
这是为您所做的分析,现在您可以关注代码了
您需要询问s/he“无硬编码”是什么意思,通常是指传递参数,而不是固定输入值。根据您运行代码的方式,有很多方法可以做到这一点。属性是java中常见的方法。我对基本java算术计算的快速回答如下: 首先考虑以下值:
1 Minute = 60 Seconds
1 Hour = 3600 Seconds ( 60 * 60 )
1 Day = 86400 Second ( 24 * 3600 )
int input=500000;
int numberOfDays;
int numberOfHours;
int numberOfMinutes;
int numberOfSeconds;
numberOfDays = input / 86400;
numberOfHours = (input % 86400 ) / 3600 ;
numberOfMinutes = ((input % 86400 ) % 3600 ) / 60
numberOfSeconds = ((input % 86400 ) % 3600 ) % 60 ;
我希望能有所帮助
给你。我对基本java算术计算的快速回答是: 首先考虑以下值:
1 Minute = 60 Seconds
1 Hour = 3600 Seconds ( 60 * 60 )
1 Day = 86400 Second ( 24 * 3600 )
int input=500000;
int numberOfDays;
int numberOfHours;
int numberOfMinutes;
int numberOfSeconds;
numberOfDays = input / 86400;
numberOfHours = (input % 86400 ) / 3600 ;
numberOfMinutes = ((input % 86400 ) % 3600 ) / 60
numberOfSeconds = ((input % 86400 ) % 3600 ) % 60 ;
我希望能有所帮助
给您。您可以使用Java enum来执行数学运算并避免任何硬编码的值。然后我们可以使用和一对StringBuilder
(s)以及一个来构建请求的输出。例如
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter a number of seconds:");
String str = scanner.nextLine().replace("\\,", "").trim();
long secondsIn = Long.parseLong(str);
long dayCount = TimeUnit.SECONDS.toDays(secondsIn);
long secondsCount = secondsIn - TimeUnit.DAYS.toSeconds(dayCount);
long hourCount = TimeUnit.SECONDS.toHours(secondsCount);
secondsCount -= TimeUnit.HOURS.toSeconds(hourCount);
long minutesCount = TimeUnit.SECONDS.toMinutes(secondsCount);
secondsCount -= TimeUnit.MINUTES.toSeconds(minutesCount);
StringBuilder sb = new StringBuilder();
sb.append(String.format("%d %s, ", dayCount, (dayCount == 1) ? "day"
: "days"));
StringBuilder sb2 = new StringBuilder();
sb2.append(sb.toString());
sb2.append(String.format("%02d:%02d:%02d %s", hourCount, minutesCount,
secondsCount, (hourCount == 1) ? "hour" : "hours"));
sb.append(String.format("%d %s, ", hourCount, (hourCount == 1) ? "hour"
: "hours"));
sb.append(String.format("%d %s and ", minutesCount,
(minutesCount == 1) ? "minute" : "minutes"));
sb.append(String.format("%d %s.", secondsCount,
(secondsCount == 1) ? "second" : "seconds"));
System.out.printf("You entered %s seconds, which is %s (%s)%n",
new DecimalFormat("#,###").format(secondsIn), sb, sb2);
当我输入500000
时,输出请求的(为post添加了手动换行符)-
您可以使用Java枚举来执行计算并避免任何硬编码的值。然后,我们可以使用和一对StringBuilder
(s)以及一个来构建请求的输出。例如
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter a number of seconds:");
String str = scanner.nextLine().replace("\\,", "").trim();
long secondsIn = Long.parseLong(str);
long dayCount = TimeUnit.SECONDS.toDays(secondsIn);
long secondsCount = secondsIn - TimeUnit.DAYS.toSeconds(dayCount);
long hourCount = TimeUnit.SECONDS.toHours(secondsCount);
secondsCount -= TimeUnit.HOURS.toSeconds(hourCount);
long minutesCount = TimeUnit.SECONDS.toMinutes(secondsCount);
secondsCount -= TimeUnit.MINUTES.toSeconds(minutesCount);
StringBuilder sb = new StringBuilder();
sb.append(String.format("%d %s, ", dayCount, (dayCount == 1) ? "day"
: "days"));
StringBuilder sb2 = new StringBuilder();
sb2.append(sb.toString());
sb2.append(String.format("%02d:%02d:%02d %s", hourCount, minutesCount,
secondsCount, (hourCount == 1) ? "hour" : "hours"));
sb.append(String.format("%d %s, ", hourCount, (hourCount == 1) ? "hour"
: "hours"));
sb.append(String.format("%d %s and ", minutesCount,
(minutesCount == 1) ? "minute" : "minutes"));
sb.append(String.format("%d %s.", secondsCount,
(secondsCount == 1) ? "second" : "seconds"));
System.out.printf("You entered %s seconds, which is %s (%s)%n",
new DecimalFormat("#,###").format(secondsIn), sb, sb2);
当我输入500000
时,输出请求的(为post添加了手动换行符)-
谢谢大家的帮助,我真的很感激,但我确实做了一些思考,开始做一些伪代码,并想出了这个
import java.util.Scanner;
公共类项目{
public static void main(String[] args) {
//variable declaration
Scanner scan = new Scanner(System.in);
final int MIN = 60, HRS = 3600, DYS = 84600;
int input, days, seconds, minutes, hours, rDays, rHours;
//input
System.out.println("Enter amount of seconds!");
input = scan.nextInt();
//calculations
days = input/DYS;
rDays = input%DYS;
hours = rDays/HRS;
rHours = rDays%HRS;
minutes = rHours/MIN;
seconds = rHours%MIN;
//output
if (input >= DYS) {
System.out.println(input + " seconds equals to " + days + " days " + hours + " hours " + minutes + " minutes " + seconds + " seconds");
}
else if (input >= HRS && input < DYS) {
System.out.println(input + " seconds equals to " + hours + " hours " + minutes + " minutes " + seconds + " seconds");
}
else if (input >= MIN && input < HRS) {
System.out.println(input + " seconds equals to " + minutes + " minutes " + seconds + " seconds");
}
else if (input < MIN) {
System.out.println(input + " seconds equals to seconds");
}
scan.close();
}
publicstaticvoidmain(字符串[]args){
//变量声明
扫描仪扫描=新扫描仪(System.in);
最终整数最小值=60,小时数=3600,DYS=84600;
整数输入,天,秒,分钟,小时,日,小时;
//输入
System.out.println(“输入秒数!”);
输入=scan.nextInt();
//计算
天数=输入/数据类型;
rDays=输入%DYS;
小时=日/小时;
rHours=日百分比小时;
分钟=罗尔/分钟;
秒=小时%MIN;
//输出
如果(输入>=DYS){
System.out.println(输入+“秒”等于“+天+“天”+小时+“小时”+分钟+“分钟”+秒+“秒”);
}
否则,如果(输入>=小时和输入=分钟和输入<小时){
System.out.println(输入+秒等于+分钟+分钟+秒+秒);
}
否则如果(输入<最小值){
System.out.println(输入+“秒等于秒”);
}
scan.close();
}
我知道这看起来很无聊,但请记住,我还是个新手,不仅是Java,还是编程新手,谁知道伪代码真的很有用。谢谢大家的帮助,我真的很感激,但我确实做了一些思考,开始做一些伪代码,并想出了这个主意
import java.util.Scanner;
公共类项目{
public static void main(String[] args) {
//variable declaration
Scanner scan = new Scanner(System.in);
final int MIN = 60, HRS = 3600, DYS = 84600;
int input, days, seconds, minutes, hours, rDays, rHours;
//input
System.out.println("Enter amount of seconds!");
input = scan.nextInt();
//calculations
days = input/DYS;
rDays = input%DYS;
hours = rDays/HRS;
rHours = rDays%HRS;
minutes = rHours/MIN;
seconds = rHours%MIN;
//output
if (input >= DYS) {
System.out.println(input + " seconds equals to " + days + " days " + hours + " hours " + minutes + " minutes " + seconds + " seconds");
}
else if (input >= HRS && input < DYS) {
System.out.println(input + " seconds equals to " + hours + " hours " + minutes + " minutes " + seconds + " seconds");
}
else if (input >= MIN && input < HRS) {
System.out.println(input + " seconds equals to " + minutes + " minutes " + seconds + " seconds");
}
else if (input < MIN) {
System.out.println(input + " seconds equals to seconds");
}
scan.close();
}
publicstaticvoidmain(字符串[]args){
//变量声明
扫描仪扫描=新扫描仪(System.in);
最终整数最小值=60,小时数=3600,DYS=84600;
整数输入,天,秒,分钟,小时,日,小时;
//输入
System.out.println(“输入秒数!”);
输入=scan.nextInt();
//计算
天数=输入/数据类型;
rDays=输入%DYS;
小时=日/小时;
rHours=日百分比小时;
分钟=罗尔/分钟;
秒=小时%MIN;
//输出
如果(输入>=DYS){
System.out.println(输入+“秒”等于“+天+“天”+小时+“小时”+分钟+“分钟”+秒+“秒”);
}
否则,如果(输入>=小时和输入