DamSi

Untitled

Jul 25th, 2015
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.42 KB | None | 0 0
  1. import java.io.InputStream;
  2. import java.io.OutputStream;
  3. import java.io.PrintWriter;
  4. import java.util.ArrayList;
  5. import java.util.Collections;
  6. import java.util.Comparator;
  7. import java.util.Scanner;
  8.  
  9. public class BodyFormTest {
  10.     public static void main(String[] args) {
  11.         BodyForm bodyForm = new BodyForm();
  12.         bodyForm.readData(System.in);
  13.         System.out.println("BY MAX");
  14.         bodyForm.printByWeight(System.out, 1);
  15.         System.out.println("BY AVG");
  16.         bodyForm.printByWeight(System.out, 2);
  17.     }
  18. }
  19.  
  20. class BodyForm {
  21.     private ArrayList<Person> persons;
  22.  
  23.     public BodyForm() {
  24.         persons = new ArrayList<Person>();
  25.     }
  26.  
  27.     void readData(InputStream inputStream) {
  28.         Scanner scanner = new Scanner(inputStream);
  29.         while (scanner.hasNext()) {
  30.             String line = scanner.nextLine();
  31.             String[] parts = line.split(" ");
  32.             String name = parts[0];
  33.             Person person = new Person(name);
  34.             for (int i = 1; i < parts.length; ++i) {
  35.                 person.addMeasurment(Float.parseFloat(parts[i]));
  36.             }
  37.             persons.add(person);
  38.         }
  39.         scanner.close();
  40.     }
  41.  
  42.     void printByWeight(OutputStream outputStream, int type) {
  43.         PrintWriter pw = new PrintWriter(outputStream);
  44.         if (type == 1) {
  45.             Collections.sort(persons, new MaxComparator());
  46.         }
  47.         if (type == 2) {
  48.             Collections.sort(persons, new AvgComparator());
  49.         }      
  50.         for (Person person : persons) {
  51.             pw.println(person);
  52.         }
  53.         pw.flush();
  54.     }
  55.  
  56. }
  57.  
  58. class Person {
  59.     String name;
  60.     ArrayList<Float> measurements;
  61.     float max;
  62.     float sum;
  63.     float avg;
  64.  
  65.     public Person(String name) {
  66.         this.name = name;
  67.         measurements = new ArrayList<Float>();
  68.         sum = 0;
  69.         max = Float.MIN_VALUE;
  70.     }
  71.  
  72.     public void addMeasurment(float weightMeasurement) {
  73.         measurements.add(weightMeasurement);
  74.         sum += weightMeasurement;
  75.         if (weightMeasurement > max) {
  76.             max = weightMeasurement;
  77.         }
  78.         avg = sum / measurements.size();
  79.     }
  80.  
  81.  
  82.     @Override
  83.     public String toString() {     
  84.         return String.format("%s MAX : %.1f kg, AVG : %.1f kg", name, max, avg);
  85.     }
  86. }
  87.  
  88. class MaxComparator implements Comparator<Person> {
  89.     @Override
  90.     public int compare(Person p1, Person p2) {
  91.         if(p1.max < p2.max) return -1;
  92.         else if(p1.max > p2.max) return 1;
  93.         else return 0;
  94.     }
  95. }
  96.  
  97. class AvgComparator implements Comparator<Person> {
  98.     @Override
  99.     public int compare(Person p1, Person p2) {
  100.         if(p1.avg < p2.avg) return -1;
  101.         else if(p1.avg > p2.avg) return 1;
  102.         else return 0;
  103.     }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment