Java代码(按预期)可用于除一个输入之外的多个输入:500000

Java代码(按预期)可用于除一个输入之外的多个输入:500000,java,Java,我想做一个时间计算器。(早些时候发了一篇关于它的帖子,我修复了它)。代码按预期工作,除非我输入数字500000。它只是自动终止程序,没有打印语句。然而,如果我愿意,我可以输入1-48888和544444-900000之间的任何内容,这将起作用 我移动了if语句,在这里和那里嵌套了一些。我无法在if/else-if语句中判断问题出在哪里 最终整数x=9; 最终整数y=1; 最后整数天; 最后整小时; 最后整数分钟; 最后整数秒; 天数=总秒数/86400; 小时=(总秒数%86400)/3600

我想做一个时间计算器。(早些时候发了一篇关于它的帖子,我修复了它)。代码按预期工作,除非我输入数字500000。它只是自动终止程序,没有打印语句。然而,如果我愿意,我可以输入1-48888和544444-900000之间的任何内容,这将起作用

我移动了if语句,在这里和那里嵌套了一些。我无法在if/else-if语句中判断问题出在哪里


最终整数x=9;
最终整数y=1;
最后整数天;
最后整小时;
最后整数分钟;
最后整数秒;
天数=总秒数/86400;
小时=(总秒数%86400)/3600;
分钟=((总秒数%86400)%3600)/60;
秒=((总秒数%86400)%3600)%60;
如果(小时==0){
如果(分钟=y和天数==0){
如果(分钟=y和小时>=y){
如果(分钟
当我输入任何有天数的数字时,它应该输出:

您输入了500000秒,即5天18小时53分钟20秒。(5天18:53:20小时)

实际输出(当我输入500000时)绝对是零。程序只是自动终止,没有打印


我已经添加了
else
,但问题仍然存在。

我不知道您的代码有什么问题,但我认为您应该在这里使用模数,而不是
字符串#格式

public String printTimes(int input) {
    int seconds = input % 60;
    int minutes = (input / 60) % 60;
    int hours = (input / 3600) % 60;
    int days = input / (3600*24);

    String output = "You entered " + input + " seconds, which is " +
         days + " days, " + hours + " hours, " + minutes + " minutes and " +
         seconds + " seconds (" + days + " days " + hours + ":" + minutes + ":" +
         seconds + " hours)";

    return output;
}
,您的程序不输出任何内容,因为您只在
(分
时打印数据(如果其中一个小于9…则实际上应小于或等于9)。我怀疑符合这一条件的人数超过50万

对于新的else情况,它应该总是输出一些数据,尽管可能不正确

在任何情况下,数学都可以简化,您应该完全删除该检查,并立即分配这些填充字符串,即使以后不使用它们

这个最小的例子至少可以打印一些东西


您描述了1个输入,大概是
总秒数
,但您尚未共享初始化所有其他变量的代码:
小时
分钟
Seconds
Days>=y&&Hours>=y
Minutes
中的所有变量的准确值是多少?在测试用例中,它给出了错误的输出?好吧,编辑您说的是“5天,18小时,53分钟和20秒”,所以让我们按照代码:
如果(Hours==0)
失败,所以:
else if(Hours>=y&&Days==0)
失败,所以:
else if(Days>=y&&Hours>=y)
好,所以:
if(Minutes
失败(分和秒都是>=9),所以:没有其他子句,所以没有打印内容现在阅读:您不需要“填充变量”。。。删除
如果(分钟
字符串。格式(“%02d”,10)
仍将显示10非常感谢!然而,我想能够输入任何数字。我已经给了你们一个通用的方法,q.v。我更新的答案。我想非常感谢你们。我认为你关于(分钟.... final int minutes = (total_seconds / 60) % 60; final int seconds = total_seconds % 60; String paddedMinutes = String.format("%02d" , minutes); String paddedSeconds = String.format("%02d" , seconds); System.out.printf("You entered %d second(s), which is ", total_seconds); if (hours == 0) { System.out.printf("%d minute(s), and %d second(s).\n", minutes, seconds); System.out.print(paddedMinutes + ":" + paddedSeconds); } else if ( ... ) { ... }