【发布时间】:2018-03-09 07:35:55
【问题描述】:
我是 Java 新手。我得到了 3 次,格式为“HH:mm:ss”。我应该接受一个输入(以整数(并且必须以分钟为单位))将其添加到第三次。如果时间之和小于第 1 次和第 2 次(第 1 次
但是,我将日期映射到的双变量的值正在返回 有时为负值(请检查输出)。
有人能帮我理解为什么吗?谢谢。
import java.util.*;
import java.text.*;
public class TimeTrial2 {
public static void main(String q[]) throws ParseException
{
Scanner x=new Scanner(System.in);
SimpleDateFormat y=new SimpleDateFormat("HH");
SimpleDateFormat k=new SimpleDateFormat("HH:mm:ss");
String b=x.nextLine();
Date c=k.parse(b);//1st Time
String d=x.nextLine();
Date e=k.parse(d);//2nd Time
String f=x.nextLine();
Date g=k.parse(f);//Time to be added to the input
int a=x.nextInt();//Input time i
a=a/60;
Date z=y.parse(Integer.toString(a));
double p=(z.getTime()+g.getTime());
double r=c.getTime();
double s=e.getTime();
System.out.println(p+"\n"+r+"\n"+s); `//to check the values of p,r and s`
if(r>=p)
{
System.out.println("1");
}
else if(s>=p)
{
System.out.println("2");
}
else
{
System.out.println("FALSE!");
}
}
}
输入:
4:30:00
6:00:00
4:00:00
60
这是我的输出:
-2.16E7
-3600000.0
1800000.0
1
编辑:添加 330 分钟(格林威治标准时间 +5:30)可以解决问题。 但是,我建议使用 Ole V.V 的答案,因为它更容易。我不知道存在这样的日期类和方法。谢谢大家的帮助。
【问题讨论】:
-
要求我们调试您的代码不是问题,请参考How to ask
-
当getTime返回
long时,你为什么使用double? -
今天是学习使用 IDE 附带的调试器的好日子。
-
在将代码发布到 Stack Overflow 并要求我们阅读和理解时,您能想出更多解释性变量名称吗?
-
@OleV.V.:将确保我正确命名变量。很抱歉给您带来麻烦。