Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * I partial exam 2016
- */
- import java.io.*;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.stream.Collectors;
- import java.util.Arrays;
- import java.util.Comparator;
- import java.util.DoubleSummaryStatistics;
- import java.util.List;
- import java.util.stream.Collectors;
- class Temperature implements Comparable<Temperature>{
- int day;
- List<Double> measurements;
- char degrie;
- public Temperature(int day, List<Double> measurements,char degrie) {
- this.day = day;
- this.measurements = measurements;
- this.degrie= degrie;
- }
- public void convertToCelsius(){
- if(degrie=='C')
- return ;
- measurements= measurements.stream().map(i->(((i-32)*5)/9)).collect(Collectors.toList());
- degrie='C';
- }
- public void convertToFarenheit(){
- if(degrie=='F')
- return ;
- measurements= measurements.stream().map(i->(((i*9)/5)+32)).collect(Collectors.toList());
- degrie='F';
- }
- public char getDegrie() {
- return degrie;
- }
- public static Temperature create(String line){
- String[] parts= line.split("\\s+");
- int day = Integer.parseInt(parts[0]);
- char degrie = parts[1].charAt(parts[1].length()-1);
- List<Double> measurements= Arrays.stream(parts).skip(1).map(i->Double.parseDouble(i.substring(0,i.length()-1))).collect(Collectors.toList());
- return new Temperature(day,measurements,degrie);
- }
- @Override
- public String toString() {
- DoubleSummaryStatistics doubleSummaryStatistics= measurements.stream().mapToDouble(i->i).summaryStatistics();
- return String.format("%3d: Count: %3d Min: %6.2f%c Max: %6.2f%c Avg: %6.2f%c",day,
- doubleSummaryStatistics.getCount(),
- doubleSummaryStatistics.getMin(),
- getDegrie(),
- doubleSummaryStatistics.getMax(),
- getDegrie(),
- doubleSummaryStatistics.getAverage(),
- getDegrie());
- }
- public int getDay() {
- return day;
- }
- @Override
- public int compareTo(Temperature o) {
- return Comparator.comparing(Temperature::getDay).compare(this,o);
- }
- }
- class DailyTemperatures {
- List<Temperature> temperatureList;
- public DailyTemperatures() {
- temperatureList= new ArrayList<>();
- }
- public void readTemperatures(InputStream in) {
- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in));
- temperatureList= bufferedReader.lines().map(Temperature::create).collect(Collectors.toList());
- }
- public void writeDailyStats(PrintStream out, char c) {
- PrintWriter printWriter= new PrintWriter(out);
- if(c=='C')
- temperatureList.stream().forEach(Temperature::convertToCelsius);
- else{
- temperatureList.stream().forEach(Temperature::convertToFarenheit);
- }
- temperatureList.stream().sorted().forEach(i-> printWriter.println(i));
- printWriter.flush();
- }
- }
- public class DailyTemperatureTest {
- public static void main(String[] args) {
- DailyTemperatures dailyTemperatures = new DailyTemperatures();
- dailyTemperatures.readTemperatures(System.in);
- System.out.println("=== Daily temperatures in Celsius (C) ===");
- dailyTemperatures.writeDailyStats(System.out, 'C');
- System.out.println("=== Daily temperatures in Fahrenheit (F) ===");
- dailyTemperatures.writeDailyStats(System.out, 'F');
- }
- }
- // Vashiot kod ovde
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement