Answer:
Here is the JAVA application
Recording.java:
class Recording { //class name
String title; //String type variable to store the title of the song
String artist; //String type variable to store the artist name of the song
int playingTime; //int type variable to store the playing time of the song in seconds
public String getTitle() { //accessor method to get the title of the song
return title; } //returns the current title of song
public void setTitle(String title) { //mutator method to set the title of song
this.title = title; } // sets the title of song
public String getArtist() { //accessor method to get the artist name of the song
return artist; } //returns the current artist name of song
public void setArtist(String artist) { //mutator method to set the artist name of song
this.artist = artist; } //sets the artist name
public int getPlayingTime() { //accessor method to get the playing time of the song
return playingTime; } / /returns the playing time of song
public void setPlayingTime(int pt) { //mutator method to set the playing time of song
this.playingTime = pt; } //sets the playing time of song
public Recording(String title, String artist, int playingTime) { //parmeterized constructor of Recording class that takes title, artist and playingTime as parameters
this.title = title;
this.artist = artist;
this.playingTime = playingTime; } }
Explanation:
Here is the Main class:
import java.util.Scanner; //to accept input from user
public class Main {
public static void main(String[] args) { // start of main function
Recording[] song = new Recording[5]; //creates object of Recording class named song to instantiate five Recording objects
Scanner input = new Scanner(System.in); //creates Scanner class object named input
int i = 0; // declare i and initialize it to -
for (i = 0; i < song.length; i++) { //iterates through the list of song
int j = i + 1;
System.out.print("Enter the title of song " + j + ": "); //prompts user to enter the title of song
String title = input.nextLine(); //reads the title string from user
System.out.print("Enter the artist of song " + j + ": "); //prompts user to enter the artist of song
String artist = input.nextLine(); //reads the artist string from user
System.out.print("Enter the playing time of song " + j + " in seconds: ");
//prompts user to enter the playing time of song
String playtime = input.nextLine(); //reads the playing time string value from user
int playingTime = Integer.parseInt(playtime); // converts String value of playtime to integer
song[i] = new Recording(title, artist, playingTime); } //calls constructor of Recording class by passing title, artist and playingTime to it
int sort; // for choosing which field to sort
do { //continues to ask user to enter which field the Recordings should be sorted by
System.out.println("How should these songs be sorted? 1 for title 2 for artist 3 for playing time");
sort = input.nextInt(); //reads user choice to sort
if (sort > 0 && sort < 4) { //to check if user enters a valid choice
int a, b;
int max = song.length - 1;
for (a = 0; a < max; a++) { //iterates through the length of the song list setting an index variable a
for (b = 0; b < max; b++) { //iterates through the length of the song list setting an index variable b
int c = b + 1;
if (sort == 1) { //if the user selects title field
if (song[b].getTitle().compareTo(song[c].getTitle()) > 0) { // compares title of one song with the song that comes after it
Recording temp = song[b]; //sorts the titles using bubble sort by ordering each title to the immediate next and swapping them if they are not sorted already
song[b] = song[c];
song[c] = temp;
} }
else if (sort == 2) { //if the user selects artist field
if (song[b].getArtist().compareTo(song[c].getArtist()) > 0) { // compares artist of one song with the song artist that comes after it
//sorts the artists using bubble sort by ordering each title to the immediate next and swapping them if they are not sorted already
Recording temp = song[b];
song[b] = song[c];
song[c] = temp; } }
else if (sort == 3) { //if the user selects playing time field
if (song[b].getPlayingTime() > song[c].getPlayingTime()) {
/* compares artist of one song with the song artist that comes after it sorts the artists using bubble sort by ordering each title to the immediate next and swapping them if they are not sorted already */
Recording temp = song[b];
song[b] = song[c];
song[c] = temp; }
}
}
} }
else { //if user enters any invalid choice
System.out.println("Invalid choice! Enter right choice");
}
} while (sort < 1 || sort > 3); //keeps asking user to enter which field the recording to sort by until the value of sort in range of 1 to 3
for (i = 0; i < song.length; i++) { //displays the sorted song list according to selected field
System.out.println("Song: Title: " + song[i].getTitle() + ". Artist: " + song[i].getArtist() + ". Playing time: "
+ song[i].getPlayingTime() + " seconds."); }
input.close(); } }
The output of the program is attached.