Advertisement
dzocesrce

[NP] Mister Farenheit

Apr 25th, 2025
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.57 KB | None | 0 0
  1. /**
  2.  * I partial exam 2016
  3.  */
  4.  import java.io.*;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import java.util.stream.Collectors;
  8. import java.util.Arrays;
  9. import java.util.Comparator;
  10. import java.util.DoubleSummaryStatistics;
  11. import java.util.List;
  12. import java.util.stream.Collectors;
  13.  
  14.  
  15. class Temperature implements Comparable<Temperature>{
  16.     int day;
  17.     List<Double> measurements;
  18.     char degrie;
  19.  
  20.     public Temperature(int day, List<Double> measurements,char degrie) {
  21.         this.day = day;
  22.         this.measurements = measurements;
  23.         this.degrie= degrie;
  24.     }
  25.  
  26.     public void convertToCelsius(){
  27.         if(degrie=='C')
  28.             return ;
  29.         measurements= measurements.stream().map(i->(((i-32)*5)/9)).collect(Collectors.toList());
  30.         degrie='C';
  31.     }
  32.  
  33.     public void convertToFarenheit(){
  34.         if(degrie=='F')
  35.             return ;
  36.         measurements= measurements.stream().map(i->(((i*9)/5)+32)).collect(Collectors.toList());
  37.         degrie='F';
  38.     }
  39.  
  40.     public char getDegrie() {
  41.         return degrie;
  42.     }
  43.  
  44.     public static Temperature create(String line){
  45.         String[] parts= line.split("\\s+");
  46.         int day = Integer.parseInt(parts[0]);
  47.         char degrie = parts[1].charAt(parts[1].length()-1);
  48.         List<Double> measurements= Arrays.stream(parts).skip(1).map(i->Double.parseDouble(i.substring(0,i.length()-1))).collect(Collectors.toList());
  49.  
  50.         return new Temperature(day,measurements,degrie);
  51.     }
  52.     @Override
  53.     public String toString() {
  54.         DoubleSummaryStatistics doubleSummaryStatistics= measurements.stream().mapToDouble(i->i).summaryStatistics();
  55.         return String.format("%3d: Count: %3d Min: %6.2f%c Max: %6.2f%c Avg: %6.2f%c",day,
  56.                 doubleSummaryStatistics.getCount(),
  57.                 doubleSummaryStatistics.getMin(),
  58.                 getDegrie(),
  59.                 doubleSummaryStatistics.getMax(),
  60.                 getDegrie(),
  61.                 doubleSummaryStatistics.getAverage(),
  62.                 getDegrie());
  63.     }
  64.  
  65.     public int getDay() {
  66.         return day;
  67.     }
  68.  
  69.     @Override
  70.     public int compareTo(Temperature o) {
  71.         return Comparator.comparing(Temperature::getDay).compare(this,o);
  72.     }
  73. }
  74.  
  75. class DailyTemperatures {
  76.     List<Temperature> temperatureList;
  77.  
  78.     public DailyTemperatures() {
  79.         temperatureList= new ArrayList<>();
  80.     }
  81.  
  82.     public void readTemperatures(InputStream in) {
  83.         BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
  84.         temperatureList= bufferedReader.lines().map(Temperature::create).collect(Collectors.toList());
  85.     }
  86.  
  87.     public void writeDailyStats(PrintStream out, char c) {
  88.         PrintWriter printWriter= new PrintWriter(out);
  89.         if(c=='C')
  90.             temperatureList.stream().forEach(Temperature::convertToCelsius);
  91.         else{
  92.             temperatureList.stream().forEach(Temperature::convertToFarenheit);
  93.         }
  94.         temperatureList.stream().sorted().forEach(i-> printWriter.println(i));
  95.         printWriter.flush();
  96.     }
  97. }
  98. public class DailyTemperatureTest {
  99.     public static void main(String[] args) {
  100.         DailyTemperatures dailyTemperatures = new DailyTemperatures();
  101.         dailyTemperatures.readTemperatures(System.in);
  102.         System.out.println("=== Daily temperatures in Celsius (C) ===");
  103.         dailyTemperatures.writeDailyStats(System.out, 'C');
  104.         System.out.println("=== Daily temperatures in Fahrenheit (F) ===");
  105.         dailyTemperatures.writeDailyStats(System.out, 'F');
  106.     }
  107. }
  108.  
  109. // Vashiot kod ovde
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement