这是我到目前为止用两个整数和两个字符串的参数做的。我在数组列表中添加了对象字符串。对于该方法,每当我键入正确的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号时,它不会显示第二个字符串名称。我不知道我做错了什么。 谢谢
答案 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”子句的末尾。