Java 检查数组是否包含字符串

Java 检查数组是否包含字符串,java,arrays,file,search,Java,Arrays,File,Search,好的,我有一个程序,它应该存储有关CD的信息,这些CD可以在txt文件中找到。该文件以“艺术家[tab]相册”格式将数据存储在同一行中。我想做的是,让用户输入搜索查询,如果CD在数据库中,程序返回。假设我们在某行上有Green Day[tab]American Idot in.txt文件,当用户键入绿色时,程序检查该文件并返回true。但我的问题是,我当前的算法要求字符串完全匹配,而不是部分匹配。因此,用户需要键入Green Day[tab]American Idot才能在查询中实现。如何修复它

好的,我有一个程序,它应该存储有关CD的信息,这些CD可以在txt文件中找到。该文件以“艺术家[tab]相册”格式将数据存储在同一行中。我想做的是,让用户输入搜索查询,如果CD在数据库中,程序返回。假设我们在某行上有Green Day[tab]American Idot in.txt文件,当用户键入绿色时,程序检查该文件并返回true。但我的问题是,我当前的算法要求字符串完全匹配,而不是部分匹配。因此,用户需要键入Green Day[tab]American Idot才能在查询中实现。如何修复它?谢谢我确信这不是我认为的初学者

这是程序的一部分,用于管理array Artists中的搜索,其中包含当前存储在.txt文件中的所有数据

 for (String e : artists){
        if(Arrays.asList(e).contains(search)){
         contains=true;   
        }

为什么要创建一个列表?您应该使用
artist.contains(搜索)
(是的,请尝试选择更多相关的变量名)。还要确保数组中没有
null
元素,或者
search
不是
null
等,但可以执行以下操作:

for(String artist : artists) {
    if(artist.toLowerCase().contains(search.toLowerCase()) {
        contains = true;
        // break; <- you may want to break here
    }
}
for(字符串艺术家:艺术家){
if(artist.toLowerCase().contains(search.toLowerCase()){
包含=真;

//break;对于您当前的数据结构,似乎除了在数组中循环并对每个字符串调用
.contains()
(这对小数组很好,但对大数组可能会导致性能问题。)@TheLaw这是因为
为空(未初始化并分配对象)或者你的集合包含null。检查它们。我看不懂,所以你需要详细说明一下。NPE表示其中一个变量为null。请仔细检查它们中的哪一个以及原因。可能
search
为null。可能你的一个数组元素为null。可能数组本身为null。等等。我通过调用一个方法和numb来创建数组数组中元素的er是由(inti=0;isearch
的值吗?我这样做了,在到达NPE错误之前,两个变量都不是空的并且包含正确的数据。