【发布时间】:2020-12-14 18:38:38
【问题描述】:
我想使用其中一个属性在数组列表中搜索对象:字符串名称。
我已在此处打印出 Item Found,效果很好。
public static void searchItems() {
// variable declaration
String itemSearch;
// collect value of variable using Scanner class
System.out.println("\t\tSEARCH ITEMS");
System.out.println("Enter item name: ");
itemSearch = input.next();
//search for an item
for (int i=0; i<itemList.size();i++) {
if (itemList.get(i).name.equalsIgnoreCase(itemSearch)) {
System.out.println("\t\t[ITEM FOUND]");
}
}
}
但是,我也想在项目未找到时发出通知。当我将 else 添加到此 for 循环时,String itemSeacrh 与数组列表中的所有对象匹配(可能不是正确的术语,抱歉),并打印出每个对象索引的通知.
让我解释一下。假设,objects:book、pen 和 pencil 按各自的顺序存储在 ArrayList itemList 中,for 循环修改如下:
for (int i=0; i<itemList.size();i++) {
if (itemList.get(i).name.equalsIgnoreCase(itemSearch)) {
System.out.println("\t\t[ITEM FOUND]");
}
else {
System.out.println("\t\t[ITEM NOT FOUND]");
}
}
我想搜索这本书。当我以 itemSearch 的身份输入 book 时,控制台会打印以下内容:
SEARCH ITEMS
Enter item name:
book
[ITEM FOUND]
[ITEM NOT FOUND]
[ITEM NOT FOUND]
如您所见,它会检查并打印这本书是否在其他对象中未找到,这并不是我真正想到的。我希望它打印 item found 或 item not found,而不是同时打印。
谢谢。希望您能理解我的问题。
【问题讨论】:
-
定义一个布尔值,如果找到该项目,您将其设置为
true。在循环之后,写一个涉及布尔值的if-else。
标签: java for-loop object if-statement arraylist