-1

我只是以 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);
4

2 回答 2

1

用于for loop迭代时间列表。另外,你不需要 n 值,你可以直接用list.size()

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html

于 2019-06-13T16:22:27.760 回答
1

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

编辑(带有解释评论):

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);

我没有改变你的大部分代码,只是添加了一个循环并做了 N 次同样的事情。引用上面的评论,“循环是你的朋友”。

希望这可以帮助。祝你好运。如果您有任何进一步的问题,请发表评论。

于 2019-06-13T16:23:20.427 回答