Advertisement
MarijaDzingova

Untitled

Dec 23rd, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.24 KB | None | 0 0
  1. import java.text.DateFormat;
  2. import java.text.ParseException;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. import java.util.Scanner;
  6. import java.util.Date;
  7. import java.util.*;
  8.  
  9. class Day {
  10. private float temperature;
  11. private float wind;
  12. private float humidity;
  13. private float visibility;
  14. private Date date;
  15.  
  16.  
  17. public Day(float temperature, float wind, float humidity, float visibility, Date date) {
  18. this.temperature = temperature;
  19. this.wind = wind;
  20. this.humidity = humidity;
  21. this.visibility = visibility;
  22. this.date = date;
  23. }
  24. public float getTemperature(){
  25. return temperature;
  26. }
  27.  
  28. @Override
  29. public String toString() {
  30. return temperature+" "+wind+" "+"km/h "+humidity+"% "+visibility+" km "+date;
  31. }
  32.  
  33.  
  34. }
  35. class WeatherStation {
  36. private int day;
  37. private TreeMap<Date,Day> selectedDays;
  38.  
  39. public WeatherStation(int day) {
  40. this.day = day;
  41. this.selectedDays=new TreeMap<>();
  42. }
  43.  
  44. public boolean checkDays(Date date1,Date date2) {
  45. Calendar cal = Calendar.getInstance(), cal1 = Calendar.getInstance();
  46. cal.setTime(date1);
  47. cal1.setTime(date2);
  48. cal.add(Calendar.DAY_OF_MONTH, -5);
  49. return cal1.before(cal);
  50. }
  51. public boolean checkMap(Set<Date> dates,Date date){
  52. for(Date date1:dates){
  53. if(checkTime(date,date1))
  54. return false;
  55. }
  56. return true;
  57. }
  58.  
  59. public boolean checkTime(Date date1,Date date2){
  60. Calendar cal=Calendar.getInstance(),cal1=Calendar.getInstance();
  61. cal.setTime(date1);
  62. cal1.setTime(date2);
  63. return date1.getTime() / 60000.0 - date2.getTime() / 60000.0 < 2.5;
  64. }
  65.  
  66. public void addMeasurment(float temperature, float wind, float humidity, float visibility, Date date){
  67.  
  68. Map<Date,Day> newMap=new TreeMap<>();
  69. newMap.putAll(selectedDays);
  70. if(selectedDays.size() != 0){
  71.  
  72. for(Date date1:newMap.keySet()){
  73. if(checkDays(date,date1))
  74. selectedDays.remove(date1);
  75. }
  76. if(checkMap(selectedDays.keySet(),date))
  77. selectedDays.put(date,new Day(temperature,wind,humidity,visibility,date));
  78. }else
  79. selectedDays.put(date,new Day(temperature,wind,humidity,visibility,date));
  80. }
  81.  
  82. public int total(){
  83. return selectedDays.size();
  84. }
  85. public double averageTemp(){
  86. double average=0;
  87. for(Map.Entry<Date,Day> entry:selectedDays.entrySet()){
  88. average+=entry.getValue().getTemperature();
  89. }
  90. return average/selectedDays.size();
  91. }
  92.  
  93. public void status(Date from, Date to){
  94. int number=0;
  95. for(Map.Entry<Date,Day> entry:selectedDays.entrySet()){
  96. if(entry.getKey().after(from) && entry.getKey().before(to)) {
  97. System.out.println(entry.getValue());
  98. number++;
  99. }
  100. }
  101. if(number == 0)throw new RuntimeException();
  102.  
  103. String sep="Average temperature: "+String.format("%.2f",averageTemp());
  104. System.out.println(sep);
  105. }
  106. }
  107.  
  108.  
  109. public class WeatherStationTest {
  110. public static void main(String[] args) throws ParseException {
  111. Scanner scanner = new Scanner(System.in);
  112. DateFormat df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
  113. int n = scanner.nextInt();
  114. scanner.nextLine();
  115. WeatherStation ws = new WeatherStation(n);
  116. while (true) {
  117. String line = scanner.nextLine();
  118. if (line.equals("=====")) {
  119. break;
  120. }
  121. String[] parts = line.split(" ");
  122. float temp = Float.parseFloat(parts[0]);
  123. float wind = Float.parseFloat(parts[1]);
  124. float hum = Float.parseFloat(parts[2]);
  125. float vis = Float.parseFloat(parts[3]);
  126. line = scanner.nextLine();
  127. Date date = df.parse(line);
  128. ws.addMeasurment(temp, wind, hum, vis, date);
  129. }
  130. String line = scanner.nextLine();
  131. Date from = df.parse(line);
  132. line = scanner.nextLine();
  133. Date to = df.parse(line);
  134. scanner.close();
  135. System.out.println(ws.total());
  136. try {
  137. ws.status(from, to);
  138. } catch (RuntimeException e) {
  139. System.out.println(e);
  140. }
  141. }
  142. }
  143.  
  144. // vashiot kod ovde
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement