Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.60 KB | None | 0 0
  1. package company;
  2.  
  3. import com.sun.source.tree.Tree;
  4.  
  5. import java.io.InputStream;
  6. import java.io.OutputStream;
  7. import java.util.*;
  8. import java.util.stream.IntStream;
  9.  
  10. /**
  11. * January 2016 Exam problem 1
  12. */
  13. public class StudentRecordsTest {
  14. public static void main(String[] args) {
  15. System.out.println("=== READING RECORDS ===");
  16. StudentRecords studentRecords = new StudentRecords();
  17. int total = studentRecords.readRecords(System.in);
  18. System.out.printf("Total records: %d\n", total);
  19. System.out.println("=== WRITING TABLE ===");
  20. studentRecords.writeTable(System.out);
  21. System.out.println("=== WRITING DISTRIBUTION ===");
  22. studentRecords.writeDistribution(System.out);
  23. }
  24. }
  25. class Student{
  26. private String ime;
  27. private String nasoka;
  28. private int []oceni;
  29. public Student(String code, String typeOfStudeis, int []oceni) {
  30. this.ime = code;
  31. this.nasoka = typeOfStudeis;
  32. this.oceni = oceni;
  33.  
  34. }
  35.  
  36. public String getIme() {
  37. return ime;
  38. }
  39.  
  40. public String getNasoka() {
  41. return nasoka;
  42. }
  43. public double getAverages() {
  44. return (oceni[0]*6+oceni[1]*7+oceni[2]*8+oceni[3]*9+oceni[4]*10)/(double)(oceni[0]+oceni[1]+oceni[2]+oceni[3]+oceni[4]);
  45. }
  46. @Override
  47. public String toString() {
  48. return String.format("%s %.2f",ime,getAverages());
  49. }
  50. }
  51. class Nasoka{
  52. String name;
  53. HashMap<Integer,Integer> oceni;
  54.  
  55. public Nasoka(String name,int niza[]) {
  56. this.name = name;
  57. oceni=new HashMap<>();
  58. oceni.put(6,niza[0]);
  59. oceni.put(7,niza[1]);
  60. oceni.put(8,niza[2]);
  61. oceni.put(9,niza[3]);
  62. oceni.put(10,niza[4]);
  63. }
  64.  
  65. public String getName() {
  66. return name;
  67. }
  68.  
  69. public void add(int ocenki[]){
  70. int tmp=oceni.get(6);
  71. oceni.replace(6,tmp,tmp+ocenki[0]);
  72. tmp=oceni.get(7);
  73. oceni.put(7,tmp+ocenki[1]);
  74. tmp=oceni.get(8);
  75. oceni.put(8,tmp+ocenki[2]);
  76. tmp=oceni.get(9);
  77. oceni.put(9,tmp+ocenki[3]);
  78. tmp=oceni.get(10);
  79. oceni.put(10,tmp+ocenki[4]);
  80. }
  81. int getDesetki(){
  82. return oceni.get(10);
  83. }
  84.  
  85. @Override
  86. public String toString() {
  87. StringBuilder sb=new StringBuilder();
  88. sb.append(name).append("\n");
  89. IntStream.range(6,11).forEach(x->{
  90. sb.append(String.format("%2d | ",x));
  91. for (int i=0;i<oceni.get(x);i+=10){ sb.append("*");}
  92. sb.append(String.format("(%d)\n",oceni.get(x)));
  93. });
  94. return sb.toString();
  95. }
  96. }
  97. class StudentRecords{
  98. TreeMap<String, TreeSet<Student>> tabela1;
  99.  
  100. HashMap<String,Nasoka> tabela3;
  101. public StudentRecords() {
  102. tabela1=new TreeMap<>();
  103. tabela3=new HashMap<>();
  104. }
  105. int readRecords(InputStream inputStream){
  106. int br=0;
  107. Scanner sc =new Scanner(inputStream);
  108. String line=null;
  109. while (!(line=sc.nextLine()).equals("")){
  110. String part[]=line.split("\\s+");
  111. String name=part[0];
  112. String nasoka=part[1];
  113. int[] oceni=new int[5];
  114. for (int i = 2; i <part.length ; i++) {
  115. if(part[i].equals("6")){
  116. oceni[0]++;
  117. }
  118. else if(part[i].equals("7")){
  119. oceni[1]++;
  120. }
  121. else if(part[i].equals("8")){
  122. oceni[2]++;
  123. }
  124. else if(part[i].equals("9")){
  125. oceni[3]++;
  126. }
  127. else if(part[i].equals("10")){
  128. oceni[4]++;
  129. }
  130. }
  131. br++;
  132. tabela1.computeIfAbsent(nasoka,x->new TreeSet<>(Comparator.comparing(Student::getAverages).thenComparing(Student::getIme).reversed())).add(new Student(name,nasoka,oceni));
  133. if(tabela3.get(nasoka)==null){
  134. tabela3.put(nasoka,new Nasoka(nasoka,oceni));
  135. }else{
  136. tabela3.get(nasoka).add(oceni);
  137. }
  138.  
  139. }
  140. return br;
  141. }
  142. void writeDistribution(OutputStream outputStream){
  143. tabela3.values().stream().sorted(Comparator.comparing(Nasoka::getDesetki).thenComparing(Nasoka::getName).reversed()).forEach(System.out::print);
  144. }
  145. void writeTable(OutputStream outputStream){
  146. tabela1.entrySet().stream().forEach(x->{
  147. System.out.println(x.getKey());
  148. x.getValue().stream().forEach(System.out::println);
  149. });
  150. }
  151. }
  152.  
  153. //Masala masala kasala
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement