Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建一个方法,每次调用时打印数组列表的不同随机项?_Java_Random_Arraylist_Indexing_Output - Fatal编程技术网

Java 创建一个方法,每次调用时打印数组列表的不同随机项?

Java 创建一个方法,每次调用时打印数组列表的不同随机项?,java,random,arraylist,indexing,output,Java,Random,Arraylist,Indexing,Output,我正在制作一个模拟媒体播放器程序,允许用户输入、编辑、删除和查看所有曲目。很基本,我知道。但我想添加一个功能,允许在每次选择“播放随机歌曲”时打印数组列表中的随机条目,以模拟音乐播放器的随机播放功能。 所以我的方法是 public void playRandom() { System.out.println("Now Playing: " + *insert code here?* ") } 我有3个代表曲目名称、曲目年份和曲目艺术家的数组列表,但是当我在屏幕上打印时,我希望它以这样的方式

我正在制作一个模拟媒体播放器程序,允许用户输入、编辑、删除和查看所有曲目。很基本,我知道。但我想添加一个功能,允许在每次选择“播放随机歌曲”时打印数组列表中的随机条目,以模拟音乐播放器的随机播放功能。 所以我的方法是

public void playRandom()

{
System.out.println("Now Playing: " + *insert code here?* ")
} 
我有3个代表曲目名称、曲目年份和曲目艺术家的数组列表,但是当我在屏幕上打印时,我希望它以这样的方式显示:先打印艺术家,然后是连字符,然后是曲目名称

我的代码如下:

我的主要班级: 包装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);

    }
}
我的方法课:

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();
    }
}


}  
包装ca1;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Random;
导入java.util.Scanner;
公共类方法扩展了UserInput
{
扫描仪输入=新扫描仪(System.in);
//声明数组列表
List songName=new ArrayList();
List songArtist=new ArrayList();
List songYear=新数组列表();
UserInput ui=newuserinput();
私有随机新随机;
public void clearAll(){
System.out.println(“你确定吗?”);
系统输出打印(“1:是\n2:否”+“\n”);
系统输出打印(“”);
int confirmDelete=input.nextInt();
如果(confirmDelete==1){
songName.clear();
宋年;
System.out.println(“您的音乐库已被清除”);
}   
}
public void viewAll(){
System.out.println(“\n”);
对于(int i=0;isongName.size()){
System.out.println(“无效”);
}
否则{
删除--;
System.out.println(“您确定要从您的音乐库中删除“+SongArtister.get(remove)+”-“+songName.get(remove)+”(“+songYear.get(remove)+”)吗?”);
系统输出打印(“1:是\n2:否”+“\n”);
int confirmDelete=input.nextInt();
如果(confirmDelete==1){
歌曲艺术家。移除(移除);
songName.remove(移除);
宋年。移除(移除);
System.out.println(songName.get(remove)+“刚刚从音乐库中删除”);
//viewAll();
}       
}
} 
公共图书馆
{
String RandomSong=(SongName.random);
系统输出(“正在播放+”随机歌曲);
}            
公共无效编辑项(){
viewAll();
System.out.println(“选择要编辑的歌曲(1到“+songName.size()+”));
//打印出库的内容,第一个条目是索引1
//该库已编号并一直到最后一个条目的索引
int edit=input.nextInt();
如果(编辑>songName.size()){
System.out.println(“无效选择”);
//如果用户选择了一个与索引不一致的数字
//在数组列表中,它们将显示一个错误。
}
否则{
编辑--;
System.out.println(“\n”+”输入新曲目名称:”);
input.nextLine();
String editName=input.nextLine();
songName.set(编辑,编辑名称);
//编辑选定乐曲对象的songName值
System.out.println(“\n”+“输入新艺术家”);
字符串editArtist=input.nextLine();
songArtist.set(编辑,编辑艺术家);
//编辑选定歌曲对象的SongArtister值
System.out.println(“\n”+”进入新年:”;
国际编辑年;
editYear=input.nextInt();
songYear.set(编辑,编辑年);
//编辑选定乐曲对象的songName值
System.out.print(“\n”+”您的更改已保存:“+”\n”);
System.out.print(“\n”+“这是您当前的库”);
viewAll();
}
}
}  

我认为你必须这样做:

了解阵列的长度。例如,50首歌曲。然后,生成一个介于0和长度-1之间的随机数

public void playRandom()
{
  int randomnumber =(int)(Math.random() * (length-1));
  System.out.println("Now Playing: " + arrayOfSongName[randomnumber]);
} 
然后你有一个随机轨迹