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