Note that there are some explanatory texts on larger screens.

plurals
  1. POCreating a method that searches an Array for a user inputted value, outputs result(s) if any?
    text
    copied!<p>I have a program that stores 4 array lists: songName, songArtist, songAlbum &amp; songYear which can be all added to,edited,shuffled and delete by the user. I want to create a method, that when called asks the user to input a string, which then searches the array and prints any corresponding results. For example if I searched the songName array for any song with "The" in the title, they'd output one on each line.</p> <p>Can anybody help me out with this one? Thanks in advance :)</p> <p>My Code:</p> <p>Main Class:</p> <pre><code>package ca1; //imports the scanner import java.util.Scanner; public class MainClass extends UserInput { public String nextInt; public static void main(String[] args) { //Links to the UserInput class to create an object that stores //user input UserInput ui = new UserInput(); //Creates new scanner object Scanner input = new Scanner(System.in); //Declares the int "opt" so it can be used in the menu int opt; //Calls Methods Class so methods can be used below Methods methodsFunctions = new Methods(); //initial prompt only displayed when program is first ran System.out.println("Welcome to your music library"); //Usig a do while loop so that the program keeps running until //a specific condition is met, in this case it's when 0 is selected. do { //Menu Prompts printed to the screen for the user to select from System.out.println("........ \n"); System.out.println("Press 0 to Exit\n"); System.out.println("Press 1 to Add a Song\n"); System.out.println("Press 2 to View All Songs\n"); System.out.println("Press 3 to Remove a Song\n"); System.out.println("Press 4 to Edit Song Information\n"); System.out.println("Press 5 to Shuffle Library\n"); System.out.println("Press 6 to Search (by name) \n"); System.out.println("Press 7 to Remove ALL Songs\n"); //Monitors the next Int the user types opt = input.nextInt(); //"if" statements if (opt == 0) { //This corresponds to the condition of the while loop, //The program will exit and print "Goodbye!" for the user. System.out.println("Goodbye!"); } else if (opt == 1) { //This method allows the user to add a song to the library. //With the format being Title, Artist, Year. methodsFunctions.addEntry(); } else if (opt == 2) { //This method prints the contents of the Array List to the screen methodsFunctions.viewAll(); } else if (opt == 3) { //This method allows the user to remove an indiviual song from //their music library methodsFunctions.removeOne(); } else if (opt == 4) { //This method allows the user to edit the data of a particular //and then prints the new value on screen methodsFunctions.editItem(); } else if (opt == 5) { //This method uses the Collections.shuffle method //to re-arrange the track list //song to simulate a music player's shuffle effect. methodsFunctions.shuffleSongs(); } else if (opt == 6) { methodsFunctions.searchSongs(); } else if (opt == 7) { //This method will clear all contents of the library. //It will ask the user to confirm their choice. methodsFunctions.clearAll(); } else { //If the user selects an incorrect number, the console will //tell the user to try again and the main menu will print again System.out.println("Incorrect Entry, please try again"); } } //do-while loop while (opt &gt; 0); } } </code></pre> <p>Methods Class</p> <pre><code> package ca1; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; import java.util.Scanner; public class Methods extends UserInput { Scanner input = new Scanner (System.in); //Declare array lists List&lt;String&gt; songName = new ArrayList&lt;&gt;(); List&lt;String&gt; songArtist = new ArrayList&lt;&gt;(); List&lt;String&gt; songAlbum = new ArrayList&lt;&gt;(); List&lt;Integer&gt; songYear = new ArrayList&lt;&gt;(); UserInput ui = new UserInput(); public void clearAll(){ System.out.println("Are you sure?"); System.out.print("1: Yes \n2: No" + "\n"); System.out.print(""); int confirmDelete=input.nextInt(); if (confirmDelete == 1){ songName.clear(); songYear.clear(); System.out.println("Your music library has been cleared"); } } public void viewAll(){ System.out.println("\n"); System.out.println("Your Music Library" + "\n" + " Artist - Song - Album (Year) " + "\n"); for (int i = 0; i &lt; songName.size(); i++) { int counter=i+1; System.out.println(counter+": "+songArtist.get(i)+" - "+ songName.get(i)+ " - " + songAlbum.get(i) + " (" +songYear.get(i)+") "); } System.out.println("\n"); } public void addEntry(){ //System.out.print("Enter Name: "); String newName = ui.getString("Enter the name of the track"); songName.add(newName); String newArtist = ui.getString("Who performs this track"); songArtist.add(newArtist); String newAlbum = ui.getString("What album is this track from"); songAlbum.add(newAlbum); System.out.print("What year was the track released? "); int newYear=input.nextInt(); songYear.add(newYear); System.out.println("\n" + "Thank you, " +songName.get(songName.size()-1) + " has been added to the library."); System.out.println("\n" + "Press 2 to view your library." + "\n"); /* System.out.println("\n"+songName.get(songName.size()-1)); System.out.println("\n"+songArtist.get(songArtist.size()-1)); System.out.println("\n"+songYear.get(songYear.size()-1)); */ } public void removeOne(){ System.out.println(" Which song would you like to delete? (1 to "+songName.size()+")"); viewAll(); int remove=input.nextInt(); if (remove &gt;songName.size()){ System.out.println("Invalid "); } else { remove--; System.out.println("Are you sure you would like to delete "+songArtist.get(remove)+" - "+songName.get(remove)+ "-" + songAlbum.get(remove) +" (" +songYear.get(remove)+ ") from your music library?"); System.out.print("1: Yes \n2: No" + "\n"); int confirmDelete=input.nextInt(); if (confirmDelete == 1){ songArtist.remove(remove); songAlbum.remove(remove); songName.remove(remove); songYear.remove(remove); System.out.println(songName.get(remove)+ " has just been removed from your music library"); // viewAll(); } } } public void shuffleSongs(){ //The attributes of the song all get shuffled together because they //are all linked by the same seed. long seed = System.nanoTime(); Collections.shuffle(songName, new Random(seed)); Collections.shuffle(songArtist, new Random(seed)); Collections.shuffle(songAlbum, new Random(seed)); Collections.shuffle(songYear, new Random(seed)); System.out.println("Your library is now shuffled" + "\n"); viewAll(); //Shuffles library, then outputs the new library list. } public void editItem(){ viewAll(); System.out.println("Choose the song you want to edit (1 to "+songName.size()+")"); //prints out the contents of library with first entry being index 1 //The library is numbered and goes as far as the index of the last entry int edit=input.nextInt(); if (edit &gt;songName.size()){ System.out.println("Invalid Selection"); //if user selects a number that corresponds to an index that's not //In the array list, they will be shown an error. } else{ edit--; System.out.println("\n" + "Enter New Track Name: "); input.nextLine(); String editName=input.nextLine(); songName.set(edit,editName); //Edits the songName value of the Song object selected System.out.println("\n" + "Enter New Artist "); String editArtist=input.nextLine(); songArtist.set(edit,editArtist); //Edits the songArtist value of the Song object selected System.out.println("\n" + "Enter New Album "); String editAlbum=input.nextLine(); songArtist.set(edit,editAlbum); //Edits the songAlbum value of the Song object selected System.out.println("\n" + "Enter New Year:"); int editYear; editYear = input.nextInt(); songYear.set(edit,editYear); //Edits the songName value of the Song object selected System.out.print("\n" + "Your changes have been saved:" + "\n"); System.out.print("\n" + "This is your current library"); viewAll(); } } public void searchSongs(){ } } </code></pre> <p>Everything works, I just want to add the functionality of being able to search. </p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload