java - 在数组列表中搜索字符串并打印该字符串

标签 java string arraylist

我正在尝试在 arrayList 中搜索用户输入指定的字符串,然后将搜索结果打印到控制台。我知道我应该使用 toIndex() 但我不知道如何对其进行语法分析。

import java.util.*;

public class searchSongs {

    public static void main(String[]args){

        Scanner searchBar = new Scanner(System.in);
        System.out.println("Enter song title");
        String search = searchBar.nextLine().toUpperCase();

            for (int i = 0; i< MP3_catalogue.artist.size(); i++){
                if (MP3_catalogue.artist.contains(search)){
                    int SV = search.indexOf(search);
                    System.out.println(MP3_catalogue.title.get(SV));
                    System.out.println(MP3_catalogue.artist.get(SV));
                    System.out.println(MP3_catalogue.duration.get(SV));
            }
        }

        MP3_catalogue obj = new MP3_catalogue();
    }
}

编辑:主类是包含数组列表的 MP3_catalogue。无需对其他 arrayLists 做任何特殊操作,它们具有与艺术家相同的索引值

import java.util.*;

public class MP3_catalogue {
    static String gotoMenu = new String();

//"gotoMenu" is variable used to return to menu after each interaction with the methods.

public static ArrayList<String> title = new ArrayList<String>(); 
public static ArrayList<String> artist = new ArrayList<String>();
public static ArrayList<String> duration = new ArrayList<String>();

//arrayLists for song elements

@SuppressWarnings("resource")
public static void main(String[]args){
    System.out.println("Welcome to your music catalogue. \n \n" + "Menu choices:");
    System.out.println("A to add songs\n" + "D to delete songs\n" + "S to search catalogue\n" + "C to change song\n" + "? to shuffle catalogue\n");

    gotoMenu = "Y"; 
    while (gotoMenu.equals("Y")){
    System.out.println("Enter your choice:"); 

    Scanner userOption = new Scanner(System.in); //scanner to choose menu option
    String choice = userOption.nextLine().toUpperCase();

        switch (choice) {//switch statement used to go to each menu option

        case "A": addSongs.main(args);//executes addSongs
            System.out.println("Would you like to return to menu? Press Y to return, press N to exit program.");//choice to return to menu
            String goback = userOption.nextLine().toUpperCase();
            if(goback.equals("N"))
            {
                gotoMenu = "N";
            }
            break;

        case "D": deleteSongs.main(args);
            System.out.println("Would you like to return to menu? Press Y to return, press N to exit program.");//choice to return to menu
            String returnMenu = userOption.nextLine().toUpperCase();
            if(returnMenu.equals("N"))
            {
            gotoMenu = "N";
            };
            break;

        case "S": searchSongs.main(args);
                    gotoMenu = "N";
            break;
        case "C": System.out.println("Change songs");
                    gotoMenu = "N";
            break;
        case "?": System.out.println("Shuffle time");
                    gotoMenu = "N";
            break;
        default: System.out.println("Doesn't match a menu choice. Type more carefully this time.");
            break;

        }
    }
}

最佳答案

这就够了。不需要 for 循环..

        if (MP3_catalogue.artist.contains(search)){
                int SV = MP3_catalogue.artist.indexOf(search);
                System.out.println(MP3_catalogue.title.get(SV));
                System.out.println(MP3_catalogue.artist.get(SV));
                System.out.println(MP3_catalogue.duration.get(SV));
        } else {
               System.out.println("not found");
        }

关于java - 在数组列表中搜索字符串并打印该字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20211849/

相关文章:

java - 让 Java 异常子类的 getMessage() 工作

java - 分隔时间的时差

java - 打印前人的 Dijkstra 算法

string - 如何在单引号字符串中使用变量?

java - 添加到 ArrayList 后出现 NotSerializedException

java - Hibernate 使用 @ManyToOne 和 @Lazy 获取对象来生成额外的 SQL 语句

arrays - 从字符串数组中获取逗号分隔的单引号字符串列表?

arrays - 安全地调查 D 中字符串的单个字节

java - 无法使用java打印不同数据类型的arraylist

java - 初始化 ArrayList 的编码实践