+ 2
Help with code.[Job with files] C++
Given a file, the components of which are structures of the type: day, month, year. Describe a function that checks by today's date (entered from the keyboard), which of the dates in the file is closest to today's date. Дан файл, компонентами которого являются структуры типа: день, месяц, год. Описать функцию, проверяющую по сегодняшней дате (введенной с клавиатуры), какая из дат в файле является ближайшей к сегодняшнему дню
3 Antworten
0
package com.company;
import java.util.Calendar;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
public class Main {
   private List<Date> mDates = new LinkedList<>();
   public static void main(String[] args) {
      Main main = new Main();
      main.addDate(2017, 04, 07);
      main.addDate(2017, 03, 27);
      main.addDate(2017, 02, 15);
      main.addDate(2017, 04, 05);
      Date today = createDate(2017, 04, 06);
      Date closest = main.getClosestDate(today);
      System.out.println(closest);
   }
   private Date getClosestDate(Date date) {
      Date closest = mDates.get(0);
      long difference = getDifference(date, closest);
      for (int i = 1; i < mDates.size(); i++) {
         Date next = mDates.get(i);
         if (getDifference(date, next) < difference) {
            closest = next;
         }
      }
      return closest;
   }
   private static long getDifference(Date d1, Date d2) {
      return Math.abs(d1.getTime() - d2.getTime());
   }
   private void addDate(int year, int month, intday) {
      mDates.add(createDate(year, month, day));
   }
   private static Date createDate(int year, intmonth, int day) {
      Calendar c = Calendar.getInstance();
      c.set(year, month - 1, day, 0, 0);
      return c.getTime();
   }
}
0
File reading and user input is up to you 
0
Thank you!




