java中的时间比较

java中的时间比较,java,time,user-input,datetime-comparison,Java,Time,User Input,Datetime Comparison,我只是得到HH:MM格式的时间,并检查它是否大于9:30,然后计数c增加为1。我只是为一个用户输入了时间。但我需要从用户那里获得多次并进行比较。如果它大于9:30,则增加计数值。首先从用户那里获得n值,然后获得n个时间。我如何更改代码以获得时间的n个数和比较 Scanner input = new Scanner(System.in); String time = input.nextLine(); System.out.println(); int c=0; String time2 =

我只是得到HH:MM格式的时间,并检查它是否大于9:30,然后计数c增加为1。我只是为一个用户输入了时间。但我需要从用户那里获得多次并进行比较。如果它大于9:30,则增加计数值。首先从用户那里获得n值,然后获得n个时间。我如何更改代码以获得时间的n个数和比较

Scanner input = new Scanner(System.in);
 String time = input.nextLine();
 System.out.println();
 int c=0;
String time2 = "9:30";
 DateFormat sdf = new SimpleDateFormat("hh:mm");
 Date d1 = sdf.parse(time);
 Date d2 = sdf.parse(time2);
 if(d1.after(d2))
 {
     c++;
}
System.out.println(c);

使用循环的
迭代时间列表。另外,您不需要n值,您可以使用
list.size()直接获取它


这应该可以。这是一个基本的实现,您可以按自己喜欢的方式对其进行优化

编辑(带解释注释):

Scanner sc=新扫描仪(System.in);
//接受N的用户输入
System.out.println(“输入N”);
int n=sc.nextInt();
串时间;
int c=0;
//存储用于比较用户输入的日期格式
字符串time2=“9:30”;
DateFormat sdf=新的SimpleDateFormat(“hh:mm”);
日期d2=空;
试一试{
d2=sdf.parse(time2);
}捕获(解析异常){
e、 printStackTrace();
}
//迭代N次,要求用户输入N次。
对于(int i=0;i
我没有对你的代码做太多修改,只是添加了一个循环,并且做了N次同样的事情。引用上面的评论,“循环是你的朋友”


希望这有帮助。祝你好运如果您还有任何问题,请发表评论。

循环是您的朋友。我建议您不要使用
SimpleDateFormat
Date
。这些类设计得很糟糕,而且早已过时,其中前者尤其令人讨厌。相反,只需使用
LocalTime
from。12:15是否与9:30之后的时间相同?我输入了
12:15
,您的代码片段被打印出来
0
。这不是你的错,这是
SimpleDateFormat
行为不当。n值应该由用户输入。这是必需的。而且这更像是一个评论,而不是一个答案。你不应该提供直接的解决方案。stackoverflow不是这样工作的。请再读一遍指南。它是有效的……但是你为什么使用try-catch?请解释一下?try-catch用于采用防御性编程。如果用户输入的字符串不能在DateFormat中进行分析,该怎么办?另外,如果没有try-catch,这将是一个编译时错误。如果我们使用sc.nextLine(),它将显示异常。为什么我们不能使用它呢?这会有帮助的。
Scanner sc = new Scanner(System.in);

// accept user input for N
System.out.println("Enter N");
int n = sc.nextInt();

String time;
int c = 0;

// store the DateFormat to compare the user inputs with
String time2 = "9:30";
DateFormat sdf = new SimpleDateFormat("hh:mm");
Date d2 = null;
try {
    d2 = sdf.parse(time2);
} catch (ParseException e) {
    e.printStackTrace();
}

// iterate for N times, asking for a user input N times.
for (int i = 0; i < n; i++) {
    // get user's input to parse and compare
    System.out.println("Enter Time");
    time = sc.next();
    Date d1 = null;
    try {
        d1 = sdf.parse(time);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    if (d1.after(d2))  {
        c++;
    }
}
System.out.println(c);