Results 1 to 6 of 6
Like Tree1Likes
  • 1 Post By RarkMowe

Thread: Using a "Random" method to print out random index of Array List?

  1. #1
    RarkMowe is offline Member
    Join Date
    Oct 2012
    Posts
    6
    Rep Power
    0

    Default 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 08:20 PM.

  2. #2
    DarrylBurke's Avatar
    DarrylBurke is offline Forum Police
    Join Date
    Sep 2008
    Location
    Madgaon, Goa, India
    Posts
    11,457
    Rep Power
    20

    Default Re: Using a "Random" method to print out random index of Array List?

    If you're forever cleaning cobwebs, it's time to get rid of the spiders.

  3. #3
    RarkMowe is offline Member
    Join Date
    Oct 2012
    Posts
    6
    Rep Power
    0

    Default Re: Using a "Random" method to print out random index of Array List?

    Quote Originally Posted by DarrylBurke View Post
    Apologies, I added the code tags there.
    DarrylBurke likes this.

  4. #4
    SJF
    SJF is offline Senior Member
    Join Date
    Oct 2012
    Posts
    108
    Rep Power
    0

    Default 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.

  5. #5
    RarkMowe is offline Member
    Join Date
    Oct 2012
    Posts
    6
    Rep Power
    0

    Default Re: Using a "Random" method to print out random index of Array List?

    Quote Originally Posted by SJF View Post
    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.
    Thank you! I'm still having a problem though. This is the method I've come up with

    Java Code:
    
                public void playRandom()
            {
                int randomSong =(int)(Math.random() * (songName.length-1));
                System.out.println("/n" + "Now Playing: " + (randomSong));
            }
    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.

  6. #6
    SJF
    SJF is offline Senior Member
    Join Date
    Oct 2012
    Posts
    108
    Rep Power
    0

    Default 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

  1. Replies: 1
    Last Post: 02-01-2012, 09:37 PM
  2. Replies: 0
    Last Post: 01-23-2012, 10:12 AM
  3. Simple "Global" function to return random int
    By mac666 in forum New To Java
    Replies: 2
    Last Post: 01-10-2012, 04:13 PM
  4. "Random"-Experiment in Bar Chart
    By AAnnAA in forum New To Java
    Replies: 3
    Last Post: 12-03-2011, 03:40 PM
  5. Need your opinions on my "Random phone number generator"
    By silverglade in forum New To Java
    Replies: 18
    Last Post: 05-14-2011, 07:02 PM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •