Java 在arraylist中搜索字符串并打印该字符串
我试图在arrayList中搜索用户输入指定的字符串,然后将搜索结果打印到控制台。我知道我应该使用toIndex,但我不知道如何使用语法Java 在arraylist中搜索字符串并打印该字符串,java,string,arraylist,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 so
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_目录,其中包含ArrayList。无需对其他ArrayList执行任何特殊操作,因为它们的索引值与artist相同
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;
}
}
}
}这看起来不对
int SV = search.indexOf(search);
您希望从循环中的MP3_目录中获取对象
for (int i = 0; i< MP3_catalogue.artist.size(); i++){
Artist artist = MP3_catalogue.artist.get (i);
if (artist.contains(search)){
System.out.println(artist);
}
由于我不知道您的数据结构,我不能说上述方法是否也适用于标题和持续时间。这看起来是错误的
int SV = search.indexOf(search);
您希望从循环中的MP3_目录中获取对象
for (int i = 0; i< MP3_catalogue.artist.size(); i++){
Artist artist = MP3_catalogue.artist.get (i);
if (artist.contains(search)){
System.out.println(artist);
}
由于我不知道您的数据结构,我不能说上述方法是否也适用于标题和持续时间。这就足够了。无需对循环进行任何修改
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");
}
这就够了。无需对循环进行任何修改
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");
}
for循环在代码中的用法是什么 也许您可以这样更改代码:
for (int i = 0; i< MP3_catalogue.artist.size(); i++){
if (MP3_catalogue.artist.get(i).equals(search)){
int SV = i;
System.out.println(MP3_catalogue.title.get(SV));
System.out.println(MP3_catalogue.artist.get(SV));
System.out.println(MP3_catalogue.duration.get(SV));
}
for循环在代码中的用法是什么 也许您可以这样更改代码:
for (int i = 0; i< MP3_catalogue.artist.size(); i++){
if (MP3_catalogue.artist.get(i).equals(search)){
int SV = i;
System.out.println(MP3_catalogue.title.get(SV));
System.out.println(MP3_catalogue.artist.get(SV));
System.out.println(MP3_catalogue.duration.get(SV));
}
我更愿意这样写,将整个目录封装到单个bean中,并有效地访问/使用
class MP3Catalogue {
private String title;
private String artist;
private String duration;
public String getTitle() {
return title;
}
public String getArtist() {
return artist;
}
public String getDuration() {
return duration;
}
}
public class SearchSongs {
public static ArrayList<MP3Catalogue> catelogs = new ArrayList<MP3Catalogue>();
public static void main(String[] args) {
Scanner searchBar = new Scanner(System.in);
System.out.println("Enter song title");
String search = searchBar.nextLine().toUpperCase();
for (MP3Catalogue cat : catelogs) {
if (cat.getArtist().equalsIgnoreCase(search)) {
System.out.println(" Title = " + cat.getTitle() +" Duration = " + cat.getDuration());
}
}
}
}
我更愿意这样写,将整个目录封装到单个bean中,并有效地访问/使用
class MP3Catalogue {
private String title;
private String artist;
private String duration;
public String getTitle() {
return title;
}
public String getArtist() {
return artist;
}
public String getDuration() {
return duration;
}
}
public class SearchSongs {
public static ArrayList<MP3Catalogue> catelogs = new ArrayList<MP3Catalogue>();
public static void main(String[] args) {
Scanner searchBar = new Scanner(System.in);
System.out.println("Enter song title");
String search = searchBar.nextLine().toUpperCase();
for (MP3Catalogue cat : catelogs) {
if (cat.getArtist().equalsIgnoreCase(search)) {
System.out.println(" Title = " + cat.getTitle() +" Duration = " + cat.getDuration());
}
}
}
}
使用正则表达式和模式匹配器。ArrayList在哪里?请添加完整的代码。添加MP3_目录类详细信息您所说的搜索是什么意思;?这可能有助于理解contains方法如何使用正则表达式和模式匹配器。ArrayList在哪里?请添加完整的代码。添加MP3_目录类详细信息您所说的搜索是什么意思;?这可能有助于理解contains方法如何工作以及为什么将i分配给SV。这就是糟糕的编码是的,你是对的,SV变量是附加的,我只是更改了你的代码来显示for循环的用法。为什么要将I指定给SV。这就是糟糕的编码是的,你是对的,SV变量是额外的,我只是改变你的代码来显示for循环的用法。