Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.text.DateFormat;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Scanner;
- import java.util.Date;
- import java.util.*;
- class Day {
- private float temperature;
- private float wind;
- private float humidity;
- private float visibility;
- private Date date;
- public Day(float temperature, float wind, float humidity, float visibility, Date date) {
- this.temperature = temperature;
- this.wind = wind;
- this.humidity = humidity;
- this.visibility = visibility;
- this.date = date;
- }
- public float getTemperature(){
- return temperature;
- }
- @Override
- public String toString() {
- return temperature+" "+wind+" "+"km/h "+humidity+"% "+visibility+" km "+date;
- }
- }
- class WeatherStation {
- private int day;
- private TreeMap<Date,Day> selectedDays;
- public WeatherStation(int day) {
- this.day = day;
- this.selectedDays=new TreeMap<>();
- }
- public boolean checkDays(Date date1,Date date2) {
- Calendar cal = Calendar.getInstance(), cal1 = Calendar.getInstance();
- cal.setTime(date1);
- cal1.setTime(date2);
- cal.add(Calendar.DAY_OF_MONTH, -5);
- return cal1.before(cal);
- }
- public boolean checkMap(Set<Date> dates,Date date){
- for(Date date1:dates){
- if(checkTime(date,date1))
- return false;
- }
- return true;
- }
- public boolean checkTime(Date date1,Date date2){
- Calendar cal=Calendar.getInstance(),cal1=Calendar.getInstance();
- cal.setTime(date1);
- cal1.setTime(date2);
- return date1.getTime() / 60000.0 - date2.getTime() / 60000.0 < 2.5;
- }
- public void addMeasurment(float temperature, float wind, float humidity, float visibility, Date date){
- Map<Date,Day> newMap=new TreeMap<>();
- newMap.putAll(selectedDays);
- if(selectedDays.size() != 0){
- for(Date date1:newMap.keySet()){
- if(checkDays(date,date1))
- selectedDays.remove(date1);
- }
- if(checkMap(selectedDays.keySet(),date))
- selectedDays.put(date,new Day(temperature,wind,humidity,visibility,date));
- }else
- selectedDays.put(date,new Day(temperature,wind,humidity,visibility,date));
- }
- public int total(){
- return selectedDays.size();
- }
- public double averageTemp(){
- double average=0;
- for(Map.Entry<Date,Day> entry:selectedDays.entrySet()){
- average+=entry.getValue().getTemperature();
- }
- return average/selectedDays.size();
- }
- public void status(Date from, Date to){
- int number=0;
- for(Map.Entry<Date,Day> entry:selectedDays.entrySet()){
- if(entry.getKey().after(from) && entry.getKey().before(to)) {
- System.out.println(entry.getValue());
- number++;
- }
- }
- if(number == 0)throw new RuntimeException();
- String sep="Average temperature: "+String.format("%.2f",averageTemp());
- System.out.println(sep);
- }
- }
- public class WeatherStationTest {
- public static void main(String[] args) throws ParseException {
- Scanner scanner = new Scanner(System.in);
- DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
- int n = scanner.nextInt();
- scanner.nextLine();
- WeatherStation ws = new WeatherStation(n);
- while (true) {
- String line = scanner.nextLine();
- if (line.equals("=====")) {
- break;
- }
- String[] parts = line.split(" ");
- float temp = Float.parseFloat(parts[0]);
- float wind = Float.parseFloat(parts[1]);
- float hum = Float.parseFloat(parts[2]);
- float vis = Float.parseFloat(parts[3]);
- line = scanner.nextLine();
- Date date = df.parse(line);
- ws.addMeasurment(temp, wind, hum, vis, date);
- }
- String line = scanner.nextLine();
- Date from = df.parse(line);
- line = scanner.nextLine();
- Date to = df.parse(line);
- scanner.close();
- System.out.println(ws.total());
- try {
- ws.status(from, to);
- } catch (RuntimeException e) {
- System.out.println(e);
- }
- }
- }
- // vashiot kod ovde
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement