这就是我到目前为止对两个整数和两个字符串的参数所做的。我在数组列表中添加了对象字符串。对于这个方法,只要我输入了正确的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号时,它不会显示第二个字符串名称。我不知道我哪里做错了。谢谢
发布于 2014-10-23 16:56:39
您的break;语句位于错误的位置,请将其移动到if分支(当id匹配时)。
发布于 2014-10-23 16:57:31
这里的问题是,如果列表的第一个元素没有您要搜索的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");
}发布于 2014-10-23 17:00:58
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");
}
}}https://stackoverflow.com/questions/26524481
复制相似问题