Java 创建一个方法,在数组中搜索用户输入的值,并输出结果(如果有)?

Java 创建一个方法,在数组中搜索用户输入的值,并输出结果(如果有)?,java,methods,input,arraylist,output,Java,Methods,Input,Arraylist,Output,我有一个程序可以存储4个数组列表:songName、songArtist、songAlbum和songYear,用户可以添加、编辑、洗牌和删除这些列表。我想创建一个方法,调用该方法时要求用户输入一个字符串,然后搜索数组并打印任何相应的结果。例如,如果我在songName数组中搜索任何标题中带有“the”的歌曲,它们会在每行输出一首 有人能帮我解决这个问题吗?提前感谢:) 我的代码: 主要类别: package ca1; //imports the scanner import java.u

我有一个程序可以存储4个数组列表:songName、songArtist、songAlbum和songYear,用户可以添加、编辑、洗牌和删除这些列表。我想创建一个方法,调用该方法时要求用户输入一个字符串,然后搜索数组并打印任何相应的结果。例如,如果我在songName数组中搜索任何标题中带有“the”的歌曲,它们会在每行输出一首

有人能帮我解决这个问题吗?提前感谢:)

我的代码:

主要类别:

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 > 0);

    }
}
方法类

    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<String> songName = new ArrayList<>();
         List<String> songArtist = new ArrayList<>();
         List<String> songAlbum = new ArrayList<>();
         List<Integer> songYear = new ArrayList<>();


            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 < 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 >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 >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(){



                }




    }
包装ca1;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
导入java.util.Random;
导入java.util.Scanner;
公共类方法扩展了UserInput
{
扫描仪输入=新扫描仪(System.in);
//声明数组列表
List songName=new ArrayList();
List songArtist=new ArrayList();
List songAlbum=新建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”);
System.out.println(“您的音乐库”+“\n”+“艺术家-歌曲-专辑(年)”+“\n”);
对于(int i=0;isongName.size()){
System.out.println(“无效”);
}
否则{
删除--;
System.out.println(“您确定要从您的音乐库中删除“+SongArtister.get(remove)+”-“+songName.get(remove)+”+“-”+songAlbum.get(remove)+”(“+songYear.get(remove)+”);
系统输出打印(“1:是\n2:否”+“\n”);
int confirmDelete=input.nextInt();
如果(confirmDelete==1){
歌曲艺术家。移除(移除);
songAlbum.remove(移除);
songName.remove(移除);
宋年。移除(移除);
System.out.println(songName.get(remove)+“刚刚从音乐库中删除”);
//viewAll();
}       
}
} 
公营机构{
//这首歌的所有属性都被混合在一起,因为它们
//都由同一个种子链接。
长种子=System.nanoTime();
洗牌(歌曲名,新随机(种子));
收藏。洗牌(歌曲艺术家,新随机(种子));
收藏。洗牌(歌曲专辑,新随机(种子));
收藏。洗牌(宋年,新随机(种子));
System.out.println(“您的库现在被洗牌”+“\n”);
viewAll();
//洗牌库,然后输出新库列表。
}         
公共无效编辑项(){
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();
String searchString= "the something ok"
String[] tokens = searchString.split("\\s+");
StringBuilder sb = new StringBuilder();
sb.append("(?i)^" + "(?=.*" + tokens[0] + ")");
for (int num = 0; num < tokens.length; num++) {
    sb.append("(?=.*" + tokens[num] + ")");
}   
List<String> result = new ArrayList();
for(String i: yourStringArray){
    if(i.matches(sb.toString()))
        {
             result.add(i);
         }
}
You can figure out this part your self