Advertisement
Guest User

Untitled

a guest
Jun 18th, 2014
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.88 KB | None | 0 0
  1.  
  2. public class C0167_Intermediate {
  3.  
  4.     private static Library lib = new Library();
  5.  
  6.     public static void main(String[] args) {
  7.         //Get an array of students and sort them
  8.         Student[] students = sortStudents(readFromFile());
  9.         //Output the sorted students
  10.         outputStudents(students);
  11.     }
  12.  
  13.     private static Student[] sortStudents(Student[] s){
  14.         Student j = null;
  15.         boolean flag = true;
  16.         while(flag){
  17.             flag = false;
  18.             for(int i = 0; i < s.length-1; i++){
  19.                 if(s[i].getAverage() < s[i+1].getAverage()){
  20.                     j = s[i];
  21.                     s[i] = s[i+1];
  22.                     s[i+1] = j;
  23.                     flag = true;
  24.                 }
  25.             }
  26.         }
  27.         return s;
  28.     }
  29.  
  30.     private static void outputStudents(Student[] s){
  31.         for(int i = 0; i < s.length; i++){
  32.             System.out.print(" " + s[i].getName() + getSpacing(s[i].getName()) + s[i].getLastName() + getSpacing(s[i].getLastName()));
  33.             System.out.print(" (" + s[i].getAverage() + "%) " + " (" + s[i].getGrade() + ") ");
  34.             for(int j = 0; j < 5; j++)  System.out.print(s[i].getGradeAt(j) + getNumberSpacing(s[i].getGradeAt(j)));
  35.             System.out.println("");
  36.         }
  37.     }
  38.    
  39.     private static String getNumberSpacing(int num){
  40.         if((num + "").length() == 2)    return "   ";
  41.         else if((num + "").length() == 3)   return "  ";
  42.         else return " ";
  43.     }
  44.    
  45.     private static String getSpacing(String t){
  46.         String s = "";
  47.         for(int i = 0; i < 10-t.length(); i++){
  48.             s+= " ";
  49.         }
  50.         return s;
  51.     }
  52.  
  53.     private static Student[] readFromFile(){
  54.         String[] lines = lib.readFromFile("Grades");
  55.         Student[] students = new Student[lines.length];
  56.         String[] line;
  57.         int[] tempGrades;
  58.         for(int i = 0; i < lines.length; i++){
  59.             line = lines[i].split(" ");
  60.             tempGrades = new int[5];
  61.             for(int j = 0; j < tempGrades.length; j++)      tempGrades[j] = Integer.parseInt(line[j+2]);
  62.             students[i] = (new Student(line[0], line[1], tempGrades));
  63.         }
  64.         return students;
  65.     }
  66. }
  67.  
  68. class Student {
  69.     private String name;
  70.     private String lastName;
  71.     private int[] grades;
  72.     private static Library lib = new Library();
  73.  
  74.     public Student(String name, String lastName, int[] grades){
  75.         this.name = name;
  76.         this.lastName = lastName;
  77.         this.grades = grades;
  78.         grades = lib.sort(grades);
  79.     }
  80.  
  81.     public String getName() {
  82.         return name;
  83.     }
  84.  
  85.     public String getLastName() {
  86.         return lastName;
  87.     }
  88.  
  89.     public int getGradeAt(int j){
  90.         return grades[j];
  91.     }
  92.  
  93.     public String getGrade(){
  94.         int avg = getAverage();
  95.         if(avg >= 90)   return "A ";
  96.         else if(avg >= 80){
  97.             if(avg >= 87)   return "B+";
  98.             if(avg <= 83)   return "B-";
  99.             else return "B ";
  100.         } else if(avg >= 70){
  101.             if(avg >= 77)   return "C+";
  102.             if(avg <= 73)   return "C-";
  103.             else return "C ";
  104.         } else if(avg >= 60){
  105.             if(avg >= 67)   return "D+";
  106.             if(avg <= 63)   return "D-";
  107.             else return "D ";
  108.         } else return "F ";
  109.     }
  110.  
  111.     public int getAverage(){
  112.         int avg = 0;
  113.         for(int i = 0; i < grades.length; i++)  avg+=grades[i];
  114.         return (int) Math.ceil(avg/grades.length + 0.0);
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement