Java 如何在数组列表中查找对象?

Java 如何在数组列表中查找对象?,java,loops,arraylist,Java,Loops,Arraylist,这是我到目前为止用两个整数和两个字符串的参数所做的。我在数组列表中添加了对象字符串。对于该方法,每当我输入正确的id时,系统都应该打印出绘画名称。系统只在第一部分工作,那是在我键入1440时,但是当我键入其他id(如1441或1442)时,系统不会显示绘画名称 public PintBook() { Painting = new Array List <Painting>();`enter code here` } public void a

这是我到目前为止用两个整数和两个字符串的参数所做的。我在数组列表中添加了对象字符串。对于该方法,每当我输入正确的id时,系统都应该打印出绘画名称。系统只在第一部分工作,那是在我键入1440时,但是当我键入其他id(如1441或1442)时,系统不会显示绘画名称

public PintBook()
    {
        Painting = new Array List <Painting>();`enter code here`
    }

    public void add(int id, String name,String artist,String minibidprice)
    {
        Painting.add (new Painting(id,name,artist,minibidprice));
    }
下面编码的目的是在输入正确的id时打印出第二个字符串名

    public void id()
    {
        System.out.println("Enter Painting ID : ");
        int id = sc.nextInt();
        for (Painting e : Painting){
            if(id==e.getID()){
               System.out.println("found");
               System.out.println(e.getPaintingName());

            }else{
                System.out.println("not found");
                break;
            }
        }
    }
当我输入1440时,它显示

1440
found
Water Lillie
但是,当我键入其他正确的id号时,它不会显示第二个字符串名称。我不知道我哪里做错了。
谢谢你的休息;语句位于错误的位置,请在id匹配时将其移动到if分支。

这里的问题是,如果列表的第一个元素没有您正在搜索的id,则会中断循环

if(id==e.getID()){
    System.out.println("found");
    System.out.println(e.getPaintingName());
}
else
    System.out.println("not found");
    break;
}
像这样做

boolean found = false;
for (Painting e : Painting) {
    if(id==e.getID()){
       System.out.println("found");
       System.out.println(e.getPaintingName());
       found = true;
       break;
    }
}
if(!found){
    System.out.println("Not found");
}

在for循环的第一次迭代之后,不管是否找到id,都会调用break。Break应该位于if子句的末尾。

程序不是在循环一次后才结束,而不是请求另一个id吗?还有你的休息;如果元素不在第一个位置,这将导致多个Sysout's of not found(未找到)。完全有效,我非常感谢您的回答Danialtick先生的回答,以便将来人们得到解决方案。完全有效。您是对的,先生。我接受了你的建议,把我的代码改成了你的。@user3445104很高兴听到这个消息。那么请接受最适合帮助他人找到解决方案的答案。
boolean found = false;
for (Painting e : Painting) {
    if(id==e.getID()){
       System.out.println("found");
       System.out.println(e.getPaintingName());
       found = true;
       break;
    }
}
if(!found){
    System.out.println("Not found");
}
    void printfindings(int id){

    for (Painting e : Painting)

    {
        if(id==e.getID()){
           System.out.println("found");
           System.out.println(e.getPaintingName());

            break;


            }
        else
            System.out.println("not found");

    }
    }}