我只是一个初学者,急需帮助。我正在尝试使用具有搜索功能的链表创建一个简单的库存系统,我坚持使此功能取得圆满成功,因为我的 if else 语句包含在循环中,并且当它在循环中找不到元素时列表,它重复打印输出。它基本上会遍历每个元素,并在每次程序遍历每个元素时打印我在 else 语句上分配的字符串。我不确定我是否解释得很好,但这是对我的心态造成影响的代码:
供参考,fruitMenu 是我的链表的名称。 if 语句工作得很好,只是 else 语句不行。
//case five - search for a fruit within the inventory
public static void caseFive(){
System.out.print("What fruit would you like to search? Search for: ");
int listSize = fruitMenu.size()-1;
s.nextLine();
String userSearch = s.nextLine();
for (int j = 0; j <= listSize; j++)
{
if (fruitMenu.get(j).equalsIgnoreCase(userSearch))
{
System.out.println(userSearch + " is in the inventory");
System.out.println(fruitMenu);
break;
}
else {
System.out.println(userSearch + " is not in the inventory");
}
}
该代码最初是一个 while 循环,但将其更改为 for 循环,因为我希望它能够工作,而且我尝试在 else 语句之后添加一个中断,但这显然不起作用。我试过放
布尔查找 = false;
并将 if (find = true) 放置在 (fruitMenu.get(j).equalsIgnoreCase(userSearch)) 旁边的 for 循环中 但这是 s,till 给我带来了与 else 语句相同的问题。
由于 if 语句按照我想要的方式工作,所以当用户输入 Cherry 并且它不属于列表时,我只希望 else 语句打印一次“Cherry 不在库存中”。
非常感谢您的所有帮助。
由于您的
else
循环中有 for
语句,因此对于与用户搜索词不匹配的每个水果,它将打印“不在库存中”。您可以设置一个标志来确定是否找到水果,如果没有找到,则仅在 for
循环之外打印消息:
public static void caseFive() {
System.out.print("What fruit would you like to search? Search for: ");
int listSize = fruitMenu.size() - 1;
s.nextLine();
String userSearch = s.nextLine();
boolean found = false;
for (int j = 0; j <= listSize; j++) {
if (fruitMenu.get(j).equalsIgnoreCase(userSearch)) {
System.out.println(userSearch + " is in the inventory");
System.out.println(fruitMenu);
found = true;
break; // you found the fruit, so you can exit the loop
}
}
if (!found) {
System.out.println(userSearch + " is not in the inventory");
}
}