Results 1 to 6 of 6
- 10-24-2012, 07:02 PM #1
Member
- Join Date
- Oct 2012
- Posts
- 6
- Rep Power
- 0
Using a "Random" method to print out random index of Array List?
Hi guys. I'm making a mock-media player program that allows the user to input,edit,delete and view all tracks. Pretty basic, I know. But I want to add a feature that allows a random entry in the array list to be printed each time "Play Random Song" is selected to simulate the shuffle function of a music player.
So my method would be like
public void playRandom()
{
System.out.println("Now Playing: " + *insert code here?* ")
}
I would really appreciate if somebody could show me how to achieve this? Thanks in advance!
My code is below:
________________________
Java Code:package ca1; //imports the Random mechanism import java.util.Random; //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 Play Random Song\n"); System.out.println("Press 6 to Delete 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 will print out "Now playing" followed by a random //song to simulate a music player's shuffle effect. //methodsFunctions.RandomSong(); System.out.println("Now Playing "); } else if (opt == 6) { //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 > 0); } }
Java Code:package ca1; import java.util.ArrayList; 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<String> songName = new ArrayList<>(); List<String> songArtist = new ArrayList<>(); List<Integer> songYear = new ArrayList<>(); UserInput ui = new UserInput(); private Random newRandom; 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"); for (int i = 0; i < songName.size(); i++){ int counter=i+1; System.out.println(counter+": "+songArtist.get(i)+" - "+ songName.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); 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 >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)+" (" +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); songName.remove(remove); songYear.remove(remove); System.out.println(songName.get(remove)+ " has just been removed from your music library"); // viewAll(); } } } public void playRandom() { String RandomSong = (SongName.random); System.out("Now playing + " RandomSong); } 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 >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 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(); } } }Last edited by RarkMowe; 10-24-2012 at 07:20 PM.
- 10-24-2012, 07:17 PM #2
Re: Using a "Random" method to print out random index of Array List?
Why do they call it rush hour when nothing moves? - Robin Williams
- 10-24-2012, 07:22 PM #3
Member
- Join Date
- Oct 2012
- Posts
- 6
- Rep Power
- 0
- 10-24-2012, 08:35 PM #4
Senior Member
- Join Date
- Oct 2012
- Posts
- 108
- Rep Power
- 0
Re: Using a "Random" method to print out random index of Array List?
Take a look at Math.random() Java Platform SE 6 (Java 6 API)
Math.random() returns a double between 0.0 and 1.0. Get the result from a random() call and multiply it by your maximum index (ie array.length - 1) and typecast to int. (int)(maxIndex * Math.Random()) will give you 0-maxIndex. This is a psuedo-random number generator, not suitable for crypto, but should get the job done here.
- 10-24-2012, 08:52 PM #5
Member
- Join Date
- Oct 2012
- Posts
- 6
- Rep Power
- 0
Re: Using a "Random" method to print out random index of Array List?
Thank you! I'm still having a problem though. This is the method I've come up with
I have an error underneath the .length-1 part that I can't get rid of. It's telling me it cannot find the symbol.Java Code:public void playRandom() { int randomSong =(int)(Math.random() * (songName.length-1)); System.out.println("/n" + "Now Playing: " + (randomSong)); }
- 10-24-2012, 09:17 PM #6
Senior Member
- Join Date
- Oct 2012
- Posts
- 108
- Rep Power
- 0
Re: Using a "Random" method to print out random index of Array List?
Apologies, you're using an ArrayList.
You want songName.size(); and
songName.get(int);
so, put it together:
Java Code:int randomSong =(int)(Math.random() * (songName.size()-1)); //Generate an index into songName ArrayList System.out.println("/n" + "Now Playing: " + songName.get(randomSong)); //Get the name of the song at that index and print it out
Similar Threads
-
loop "play again" in an 8 ball game , loops but wont let me answer my "out.print"
By IareSmart in forum New To JavaReplies: 1Last Post: 02-01-2012, 08:37 PM -
Using java.util.Random to choose a random sentence and print it
By skylerrivera17 in forum New To JavaReplies: 0Last Post: 01-23-2012, 09:12 AM -
Simple "Global" function to return random int
By mac666 in forum New To JavaReplies: 2Last Post: 01-10-2012, 03:13 PM -
"Random"-Experiment in Bar Chart
By AAnnAA in forum New To JavaReplies: 3Last Post: 12-03-2011, 02:40 PM -
Need your opinions on my "Random phone number generator"
By silverglade in forum New To JavaReplies: 18Last Post: 05-14-2011, 06:02 PM


1Likes
LinkBack URL
About LinkBacks
Reply With Quote

Bookmarks