rendered paste bodyimport chn.util.*;
import apcslib.*;
public class Collection
{
private Movie[] movieList;
private double ratingTotal = 0;
private int minutes = 0;
public Collection(String fileName)
{
loadData(fileName);
}
private void loadData(String fileName)
{
String movieTitle;
String bondName;
int yearReleased;
double movieRating;
int lengthHours;
int lengthMinutes;
FileInput inFile = new FileInput(fileName);
int numReleases = inFile.readInt();
movieList = new Movie[numReleases];
for (int i = 0; i < numReleases; i++)
{
movieTitle = inFile.readLine();
bondName = inFile.readLine();
yearReleased = inFile.readInt();
movieRating = inFile.readDouble();
lengthHours = inFile.readInt();
lengthMinutes = inFile.readInt();
ratingTotal += movieRating;
minutes += lengthHours * 60 + lengthMinutes;
movieList[i] = new Movie(movieTitle, bondName, yearReleased,
movieRating, lengthHours, lengthMinutes);
}
}
public void displayInfo()
{
System.out.print(Format.center("Film Title",34));
System.out.print(Format.center("Bond Actor",16));
System.out.print(Format.center("Year",6));
System.out.print(Format.center("Rating",7));
System.out.print(Format.right("Film Length",16));
System.out.println();
System.out.println();
for (int i = movieList.length - 1; i >= 0 ; i--)
{
String output = movieList[i].toString();
System.out.println(output);
}
}
public void Sort()
{
quickSort(movieList,0,movieList.length - 1);
}
private void quickSort(Movie[] list, int first, int last)
{
int g = first;
int h = last;
int midIndex;
Movie dividingValue;
midIndex = (first + last) / 2;
dividingValue = list[midIndex];
do
{
while (list[g].compareTo(dividingValue) < 0)
{
g++;
}
while (list[h].compareTo(dividingValue) > 0)
{
h--;
}
if (g <= h)
{
// swap g and h
Movie temp = list[g];
list[g] = list[h];
list[h] = temp;
g++;
h--;
}
} while (g < h);
if (h > first)
{
quickSort(list, first, h);
}
if (g < last)
{
quickSort(list, g, last);
}
}
public void displayAveRating()
{
double rating = ratingTotal / movieList.length;
System.out.print("The average rating for a James Bond Movie is ");
System.out.print(rating);
System.out.println(" out of a possible 4.0");
}
public void displayAveMinutes()
{
int hrs = (int)(minutes / 60.0) / movieList.length;
double min = ((double)minutes / movieList.length) % 60.0;
System.out.print("The average length for a James Bond Movie is ");
System.out.println(hrs + " hrs and " + min + " minutes");
}
public static void main(String[] args)
{
Collection seriesData = new Collection("bond.txt");
seriesData.Sort();
seriesData.displayInfo();
seriesData.displayAveRating();
seriesData.displayAveMinutes();
}
}