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

时间:2014-10-23 08:52:35

标签: java loops arraylist

这是我到目前为止用两个整数和两个字符串的参数做的。我在数组列表中添加了对象字符串。对于该方法,每当我键入正确的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));
    }

之后我放入了对象

PintBook p = new PintBook();
p.add(1440,"Water-Lillies","Claude Monet","$10,000.00");
p.add(1441,"Flowers in a Blue Vase ","Paul Cezanne","$20,000.00");
p.add(1442,"The Anglers","Henri Rousseau ","$50,000.00");
p.add(1443,"Wild Potato Dreaming","Emily Kngwarreye","$45,000.00");
p.add(1446,"Argenteuil","Claude Monet ","$100,000.00");
p.add(1447,"Luncheon on the Grass","Paul Cezanne","$50,000.00");
p.add(1448,"Antonia","Amadeo Modigliani ","$30,000.00");

以下编码的目的是在

中输入正确的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号时,它不会显示第二个字符串名称。我不知道我做错了什么。     谢谢

4 个答案:

答案 0 :(得分:0)

您的break;语句位置错误,将其移至if分支(当id匹配时)。

答案 1 :(得分:0)

这里的问题是,如果列表的第一个元素没有你要搜索的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");
}

答案 2 :(得分:0)

    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");

    }
    }}

答案 3 :(得分:0)

在for循环的第一次迭代之后,无论是否找到id,都会调用break。中断应该在“if”子句的末尾。