Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I need to have this prompt user for values instead of values already given. impo

ID: 3702429 • Letter: I

Question

I need to have this prompt user for values instead of values already given.

import java.util.Scanner; public class RecordingSort { public static void main(String[]args) { Scanner scanner = new Scanner(System.in); Recording[] recordings = new Recording[5]; recordings[0] = new Recording(); recordings[0].setArtist("Goo Goo Dolls"); recordings[0].setTitle("Name"); recordings[0].setSeconds(290); recordings[1] = new Recording(); recordings[1].setArtist("Goo Goo Dolls"); recordings[1].setTitle("Iris"); recordings[1].setSeconds(300); recordings[2] = new Recording(); recordings[2].setArtist("3 Doors Down"); recordings[2].setTitle("Here Without You"); recordings[2].setSeconds(280); recordings[3] = new Recording(); recordings[3].setArtist("Pearl Jam"); recordings[3].setTitle("Black"); recordings[3].setSeconds(270); recordings[4] = new Recording(); recordings[4].setArtist("Lifehouse"); recordings[4].setTitle("Hanging by a Moment"); recordings[4].setSeconds(260); System.out.println("Sorting fields"); System.out.println("1. Artist"); System.out.println("2. Title"); System.out.println("3. Seconds"); System.out.println("Please enter your choice (1-3)"); int choice = scanner.nextInt(); switch (choice) { case 1: sortByArtist(recordings); print(recordings); break; case 2: sortByTitle(recordings); print(recordings); break; case 3: sortBySeconds(recordings); print(recordings); break; } } private static void print(Recording[] recordings) { System.out.printf("%-20s%-20s%-10s ", "Artist", "Artist", "Seconds"); for (int index = 0; index < recordings.length; index++) { System.out.printf("%-20s%-20s%-5d ", recordings[index].getArtist(), recordings[index].getTitle(), recordings[index].getSeconds()); } } private static void sortBySeconds (Recording[] recordings) { Recording temp; for (int i = 0; i < recordings.length-1; i++) { for (int j = 0; j < recordings.length-1; j++) { if(recordings[j].getSeconds() > recordings[j+1].getSeconds()) { temp=recordings[j]; recordings[j]=recordings[j+1]; recordings[j+1]=temp; } } } } private static void sortByTitle (Recording[] recordings) { Recording temp; for (int i = 0; i < recordings.length-1; i++) { for (int j = 0; j < recordings.length-1; j++) { if (recordings[j].getTitle() .compareTo(recordings[j+1].getTitle())>0) { temp=recordings[j]; recordings[j]=recordings[j+1]; recordings[j+1]=temp; } } } } private static void sortByArtist (Recording[] recordings) { Recording temp; for (int i = 0; i < recordings.length-1; i++) { for (int j = 0; j< recordings.length-1; j++) { if (recordings[j].getArtist() .compareTo(recordings[j+1].getArtist())>0) { temp=recordings[j]; recordings[j]=recordings[j+1]; recordings[j+1]=temp; } } } } }

public class Recording { private String title; private String artist; private int seconds; public Recording() { title=""; artist=""; seconds=0; } public void setTitle(String title) { this.title=title; } public void setArtist(String artist) { this.artist=artist; } public void setSeconds(int seconds) { this.seconds=seconds; } public String getTitle() { return title; } public String getArtist() { return artist; } public int getSeconds() { return seconds; } }

Explanation / Answer

Here is the code you needed. Changed the hardcoded part to prompt user, receive values and fill the array. Continuously looped the menu to sort by title, artist or seconds. Drop a comment if you have any doubts or queries. Thanks

// RecordingSort.java

import java.util.Scanner;

public class RecordingSort {

                public static void main(String[] args) {

                                Scanner scanner = new Scanner(System.in);

                                /**

                                * Prompting the user to enter the number of records he wants to add

                                */

                                System.out.println("How many records do you want to add?");

                                int n = Integer.parseInt(scanner.nextLine());

                                Recording[] recordings = new Recording[n];

                                String title, artist;

                                int secs;

                                /**

                                * looping for n times, getting input and filling the recordings array

                                */

                                for (int i = 0; i < n; i++) {

                                                System.out.printf("Song %d, enter title: ", (i + 1));

                                                title = scanner.nextLine();

                                                System.out.printf("Song %d, enter artist: ", (i + 1));

                                                artist = scanner.nextLine();

                                                System.out.printf("Song %d, enter length: ", (i + 1));

                                                secs = Integer.parseInt(scanner.nextLine());

                                                /**

                                                * Creating a Recording object, setting values and adding to the

                                                * array

                                                */

                                                Recording recording = new Recording();

                                                recording.setArtist(artist);

                                                recording.setTitle(title);

                                                recording.setSeconds(secs);

                                                recordings[i] = recording;

                                }

                                /**

                                * letting user choose the sorting mode

                                */

                                System.out.println(" Sorting fields");

                                System.out.println("1. Artist");

                                System.out.println("2. Title");

                                System.out.println("3. Seconds");

                                System.out.println("Please enter your choice (1-3)");

                                int choice = scanner.nextInt();

                                switch (choice) {

                                case 1:

                                                sortByArtist(recordings);

                                                print(recordings);

                                                break;

                                case 2:

                                                sortByTitle(recordings);

                                                print(recordings);

                                                break;

                                case 3:

                                                sortBySeconds(recordings);

                                                print(recordings);

                                                break;

                                }

                }

                private static void print(Recording[] recordings) {

                                System.out.printf("%-20s%-20s%-10s ", "Artist", "Title", "Seconds");

                                for (int index = 0; index < recordings.length; index++) {

                                                System.out.printf("%-20s%-20s%-5d ",

                                                                                recordings[index].getArtist(),

                                                                                recordings[index].getTitle(),

                                                                                recordings[index].getSeconds());

                                }

                }

                private static void sortBySeconds(Recording[] recordings) {

                                Recording temp;

                                for (int i = 0; i < recordings.length - 1; i++) {

                                                for (int j = 0; j < recordings.length - 1; j++) {

                                                                if (recordings[j].getSeconds() > recordings[j + 1].getSeconds()) {

                                                                                temp = recordings[j];

                                                                                recordings[j] = recordings[j + 1];

                                                                                recordings[j + 1] = temp;

                                                                }

                                                }

                                }

                }

                private static void sortByTitle(Recording[] recordings) {

                                Recording temp;

                                for (int i = 0; i < recordings.length - 1; i++) {

                                                for (int j = 0; j < recordings.length - 1; j++) {

                                                                if (recordings[j].getTitle().compareTo(

                                                                                                recordings[j + 1].getTitle()) > 0) {

                                                                                temp = recordings[j];

                                                                                recordings[j] = recordings[j + 1];

                                                                                recordings[j + 1] = temp;

                                                                }

                                                }

                                }

                }

                private static void sortByArtist(Recording[] recordings) {

                                Recording temp;

                                for (int i = 0; i < recordings.length - 1; i++) {

                                                for (int j = 0; j < recordings.length - 1; j++) {

                                                                if (recordings[j].getArtist().compareTo(

                                                                                                recordings[j + 1].getArtist()) > 0) {

                                                                                temp = recordings[j];

                                                                                recordings[j] = recordings[j + 1];

                                                                                recordings[j + 1] = temp;

                                                                }

                                                }

                                }

                }

}

// Recording.java

public class Recording {

                private String title;

                private String artist;

                private int seconds;

                public Recording() {

                                title = "";

                                artist = "";

                                seconds = 0;

                }

                public void setTitle(String title) {

                                this.title = title;

                }

                public void setArtist(String artist) {

                                this.artist = artist;

                }

                public void setSeconds(int seconds) {

                                this.seconds = seconds;

                }

                public String getTitle() {

                                return title;

                }

                public String getArtist() {

                                return artist;

                }

                public int getSeconds() {

                                return seconds;

                }

}

//OUTPUT

How many records do you want to add?

4

Song 1, enter title: Hello

Song 1, enter artist: Adele

Song 1, enter length: 300

Song 2, enter title: Ale ale

Song 2, enter artist: Zehry

Song 2, enter length: 270

Song 3, enter title: Iris

Song 3, enter artist: Goo Goo Dolls

Song 3, enter length: 290

Song 4, enter title: Black

Song 4, enter artist: Pearl Jam

Song 4, enter length: 326

Sorting fields

1. Artist

2. Title

3. Seconds

4. Exit

Please enter your choice (1-4)

2

Artist              Title              Seconds  

Zehry               Ale ale             270

Pearl Jam           Black               326

Adele               Hello               300

Goo Goo Dolls       Iris                290

Sorting fields

1. Artist

2. Title

3. Seconds

4. Exit

Please enter your choice (1-4)

4