java - java-如何正确添加时间?
问题描述
我的代码无法正常工作,例如,当用户现在输入的是 5 h 43 m 和 7 s 并且用户想要添加 3 h 50 m 和 57 s 代码计算并显示添加的时间,但它显示8 小时 93 米和 64 秒,但我希望在 60 米后显示 9 小时 34 米和 4 秒,所以你能帮帮我。
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner user_input = new Scanner (System.in);
int startup_hour;
int startup_minute;
int startup_second;
int add_hours;
int add_minutes;
int add_seconds;
System.out.print("what time is it right now(hour)? \n");
startup_hour = user_input.nextInt();
System.out.print("what time is it right now(minutes? \n");
startup_minute = user_input.nextInt();
System.out.print("what time is it right now(seconds)? \n");
startup_second = user_input.nextInt();
System.out.println("The starting time is " + startup_hour
+ " hours " + startup_minute + " minutes " + "and "
+ startup_second + " seconds \n");
System.out.print("How many hours you wanna add? \n");
add_hours = user_input.nextInt();
System.out.print("How many minutes you wanna add? \n");
add_minutes = user_input.nextInt();
System.out.print("How many seconds you wanna add? \n");
add_seconds = user_input.nextInt();
System.out.println("The user wanna add " + add_hours
+ " hours " + add_minutes + " minutes "
+ "and " + add_seconds + " seconds \n");
int totalHours = (startup_hour + add_hours);
int totalMinutes = (startup_minute + add_minutes);
int totalSeconds = (startup_second + add_seconds);
if (totalSeconds == 60){
totalMinutes++;
totalSeconds = 0;
}
if (totalMinutes == 60){
totalHours++;
totalMinutes = 0;
}
System.out.println("After adding, the time would then be "
+ totalHours + " hours " + totalMinutes + " Minutes "
+ totalSeconds + " Seconds ");
*emphasized text*
}
}
感谢你
解决方案
您的程序无法运行的原因是因为您正在处理时间,而不使用标准单位,即seconds
.
例如:
假设启动时间为1 hours 3 minutes and 57 seconds
。并且用户想要添加,1 hour 57 minutes and 3 seconds
.
正确答案是,3 hours 1 Minutes 0 Seconds
但你的程序会返回2 hours 61 Minutes 0 Seconds
.
现在,为什么会发生这种情况?
原因是:
- 如前所述,您没有使用标准单位 (
seconds
) 处理时间。 - 循环中的条件
if
不正确。您只检查 是否minutes/seconds
等于 60。如果minutes
orseconds
是 61 或更多怎么办?
解决方案:
最简单的解决方案是,首先将 time 转换为
seconds
,添加您要添加的时间,然后将其转换回如果您hours:minutes:seconds.
使用.if
seconds
这是修改后的代码,可以正常工作:
import java.util.Scanner;
public class Test
{
public static void main(String[] args)
{
Scanner user_input = new Scanner(System.in);
int startup_hour;
int startup_minute;
int startup_second;
int add_hours;
int add_minutes;
int add_seconds;
System.out.print("What time is it right now(hour) : ");
startup_hour = user_input.nextInt();
System.out.print("What time is it right now(minutes) : ");
startup_minute = user_input.nextInt();
System.out.print("What time is it right now(seconds) : ");
startup_second = user_input.nextInt();
System.out.println("The starting time is " + startup_hour + " hours " + startup_minute + " minutes "
+ "and " + startup_second + " seconds.");
System.out.println();
System.out.print("How many hours you wanna add : ");
add_hours = user_input.nextInt();
System.out.print("How many minutes you wanna add : ");
add_minutes = user_input.nextInt();
System.out.print("How many seconds you wanna add : ");
add_seconds = user_input.nextInt();
System.out.println("The user wanna add " + add_hours + " hours " + add_minutes + " minutes "
+ "and " + add_seconds + " seconds.");
System.out.println();
int totalSecondsAtStart = (startup_hour * 60 * 60) + (startup_minute * 60) + startup_second;
int totalSecondsToAdd = (add_hours * 60 * 60) + (add_minutes * 60) + (add_seconds);
int totalSeconds = totalSecondsAtStart + totalSecondsToAdd;
//Convert total seconds to hour, minutes and seconds;
int totalMinutes = (totalSeconds / 60);
int totalHours = (totalMinutes / 60);
int finalHours = totalHours;
int finalMinutes = totalMinutes - (totalHours * 60);
int finalSeconds = totalSeconds - (totalMinutes * 60);
System.out.println("After adding, the time would then be " + finalHours + " hours"
+ " " + finalMinutes + " Minutes " + finalSeconds + " Seconds.");
}
}
请注意我如何将时间转换回hours:minutes:seconds
.
推荐阅读
- maven - 如何让 Maven/Surefire 仅在 -pl 参数指定的模块中运行测试
- python - 没有从解析器得到正确的输出
- php - Dokan - 根据送货方式收取的运费管理佣金
- flutter - Flutter Web 和移动端基于 MQTT 证书的身份验证
- python - SqlAlchemy TypeDecorator、column_expression 和聚合函数
- linux - 如何在 linux 内核中启用 dump_stack()?
- javascript - 让 coutdown 使用 localStorage
- python-3.x - 如何从以下代码返回预期类型:int
- r - 将变量(具有接近最大值和最小值的许多数据点)转换为均匀分布?
- python - Python HTTP请求没有成功