Java 搜索阵列列表的验证

Java 搜索阵列列表的验证,java,validation,search,arraylist,Java,Validation,Search,Arraylist,嗨,我已经创建了一个代码,搜索一个数组列表,我需要能够打印一行,如果没有找到这里是我得到的 for (int i = 0; i < trackNum.size(); i++) { //looping arrayList trackNum if(trackNum.get(i).equals(trackNumber)){ //searching for matches to trackNumber System.o

嗨,我已经创建了一个代码,搜索一个数组列表,我需要能够打印一行,如果没有找到这里是我得到的

            for (int i = 0; i < trackNum.size(); i++) { //looping arrayList trackNum
            if(trackNum.get(i).equals(trackNumber)){ //searching for matches to trackNumber
                System.out.println(trackNum.get(i) + ": " + name.get(i) + " " + duration.get(i)); //printing out the matches            
            } else{
                System.out.println("Not Tracks Found for " + trackNumber);
            }
        }
for(int i=0;i
此时它不打印else行,只是保持空白。

您应该在遍历整个列表后只打印“未找到”消息:

        boolean found = false;
        for (int i = 0; i < trackNum.size(); i++) { //looping arrayList trackNum
            if(trackNum.get(i).equals(trackNumber)){ //searching for matches to trackNumber
                System.out.println(trackNum.get(i) + ": " + name.get(i) + " " + duration.get(i)); //printing out the matches            
                found = true;
                break;
            }
        }   
        if (!found) {
            System.out.println("Not Tracks Found for " + trackNumber);
        } 
boolean-found=false;
对于(int i=0;i
最好使用
contains
indexOf
进行此类搜索:

    if (trackNum.contains(trackNumber)) {
        int i = trackNum.indexOf(trackNumber);
        System.out.println(trackNum.get(i) + ": " + name.get(i) + " " + duration.get(i)); //printing out the matches            
    } else {
        System.out.println("Not Tracks Found for " + trackNumber);
    }

您确定这是与您的问题匹配的代码吗?因为在我看来,它应该为列表中的每个项目显示
else
部分,而不是只显示一次,这与您所述的问题不同。如果它保持为空,我相信列表就是空的。例如,您可以编写一个函数来迭代轨迹,并在找到某个对象时返回。循环后的代码仅在函数未返回时执行,因此您可以在该点输出not found消息。但是,如果使用哈希映射,则不需要循环。