- public static void main(String[] args) {
- /**
- * 比如输入一个时间“12:18” 在给定String数组里面找到离这个时间最接近的时间,并输出
- * 给定数组里面的值大致是这样的{“01:16”,“06:22”“14:54”“13:35”“12:19”“12:20” }
- *
- * 思路:
- * 1. 将时间转成整数
- * 2. 排序
- * 3. 比较
- */
- String[] times = {"01:16", "06:22", "14:54", "13:35", "12:17", "12:20"};
-
- //1. 转成整数
- int[] intTimes = new int[times.length];
- for (int i = 0; i < times.length; i++) {
- intTimes[i] = Integer.valueOf(times[i].replace(":", ""));
- }
-
- //2. 排序
- Arrays.sort(intTimes);
-
- //输入时间
- Scanner scan = new Scanner(System.in);
- System.out.print("请输入时间:");
- String input = scan.nextLine();
- scan.close();
- //验证输入的时间
- if (!input.matches("(\\d|(1\\d)|(2[0-4])):[0-5]\\d")) {
- System.out.println("输入的时间格式不正确");
- return;
- }
- int intResult = 0;
- int intInput = Integer.valueOf(input.replace(":", ""));
-
- //3. 比较
- for (int i = 0; i < intTimes.length; i++) {
- if (intTimes[i] > intInput) {
- if (i == 0) {
- intResult = intTimes[i];
- break;
- } else {
- intResult = (intInput - intTimes[i - 1]) < (intTimes[i] - intInput) ? intTimes[i - 1] :
- intTimes[i];
- break;
- }
- } else if (i == intTimes.length - 1) {
- intResult = intTimes[i];
- }
- }
- //得出结果
- String result = new DecimalFormat("00,00").format(intResult).replace(",", ":");
- System.out.println("最近的时间:" + result);
- }
复制代码 |